2012-02-02 43 views
0

我正在處理UITableView,並且正在執行刪除操作。據我所知有2種方式來刪除行我的編輯按鈕不能更改爲完成,通過滑動刪除行

  1. 從左至右滑動和刪除按鈕會出現的意志,這樣你可以做一個缺失

  2. 添加編輯按鈕向右右上或左上。通過點擊它,編輯將更改爲完成,表中的每一行將有一個紅色的圓圈 ( - )在每個前面。點擊它,刪除按鈕將出現 ,你可以處理

我注意到,如果你有一個編輯按鈕,使用方法1,刪除,編輯按鈕也改爲完成了...但是,在刷完它之後,我仍然是EDIT。有沒有人遇到過這個問題,請幫忙。所有評論都歡迎在這裏。謝謝

+0

這是預期的行爲。這就是Apple設計可編輯視圖控制器的方式。當一個單元格處於刪除模式時,編輯按鈕不受影響,但是,在編輯模式下,編輯按鈕顯示「完成」。改變這種行爲是不可取的,因爲這是用戶習慣的。 – Jasarien 2012-02-02 21:47:47

回答

2

當視圖不處於編輯模式時,滑動刪除會發生。它應該是瀏覽視圖時快速刪除項目的一種方法。例如,看看它在郵件應用程序中的工作原理 - 您可以點擊編輯所有行,也可以輕掃以刪除其中的一行。

所以基本上它工作正常。

但是,如果你想重寫標準行爲,你可以調用setEditing:在viewController上以編程方式切換模式,這也將更新編輯按鈕。

+0

是的我知道,但我的問題是當我刷卡,編輯不能改變完成... – tranvutuan 2012-02-02 21:35:19

+0

這可能只是一個額外的功能蘋果添加到郵件,不在標準的控制器行爲。就像我說的,我不認爲這是一個錯誤或問題,但如果你想要,你可以使用setEditing切換完成按鈕。 – 2012-02-02 21:52:28

+0

如果問題是,當您滑動刪除行時實際上並未被刪除,那是因爲您需要實現tableView:commitEditingStyle:delegate方法才能真正從表中刪除該行。 – 2012-02-02 21:53:51

1

使用viewDidLoad方法

-(void)viewDidLoad; 
{ 
    [super viewDidLoad]; 
    self.navigationItem.leftBarButtonItem = [self editButtonItem]; 
} 

添加編輯按鈕和刪除方法

- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [array removeObjectAtIndex:indexPath.row]; 
    [self.tableView deleteRowsAtIndexPath:[NSArray arrayWithObject: indexPath] withRowAnimation: UITableViewRowAnimationFade]; 
    [self.tableView reloadData]; 
} 
+0

我可以刪除行,但仍然不能改變編輯完成後,從左向右滑動.... – tranvutuan 2012-02-03 02:07:34

+0

你可以發佈代碼如何添加編輯/完成按鈕?如果你使用[self editButtonItem],那麼它應該自行切換.. – feco 2012-02-03 09:17:05

+0

我做的是//在右邊添加編輯按鈕並處理點擊事件 \t UIBarButtonItem * addButton = [[UIBarButtonItem alloc] initWithTitle:@「Edit」 風格:UIBarButtonItemStyleBordered 目標:自我 操作:@selector(EditMode :)]; \t [self。navigationItem setRightBarButtonItem:addButton]; * – tranvutuan 2012-02-03 15:31:41

0

要獲得這種行爲,你需要實現這兩個委託方法:

- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.editing = YES; 
} 

- (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.editing = NO; 
} 
相關問題