2012-03-21 74 views
2

參照這樣一個問題:Exit Edit Mode退出編輯模式和更新的導航欄項目

關於退出編輯模式下的最後一行被刪除時,我的問題是 - 你如何更新導航欄中的「編輯」項?刪除最後一行後,我想完全刪除此導航欄項目並退出編輯模式(這是按照以下問題完成的),並將此按鈕狀態恢復爲「編輯」(而不是「完成」,這是其狀態刪除最後一行後)。

這就是我現在所做的:

- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 


... 


    if ([section count] == 0) { //last row in the section 
     [listOfItems removeObject:accessNumbers]; //updating my data source 
     tblSimpleTable.editing = NO; //added per the question above 
//   self.navigationItem.rightBarButtonItem = nil; --> thats what ideally i would want to do 
//  [self setEditing:YES animated:YES]; --> adding this manually doen't help 
    } 
    else 
    { 
... 
    } 
}  


} 

感謝您的幫助!

更新:添加此行不起作用。我仍然需要點擊導航欄項目「完成」才能退出編輯模式。

[self.tblSimpleTable setEditing:YES animated:YES];

如果我也隱藏導航欄項目,我根本無法退出編輯模式,並且屏幕被凍結(我在視圖上還有其他一些按鈕,在這種情況下根本不會再觸摸) 。

回答

1

要退出編輯模式,使用此:

[self.tableview setEditing:NO animated:YES]; 

要刪除的按鈕全在一起,使用:

// Note that this only removes the right-most button. If you want to remove all of the buttons on the right side, use rightBarButtonItems instead. 
self.navigationItem.rightBarButtonItem = nil; 

// If you want it animated, use: 
[self.navigationItem setRightBarButtonItem:nil animated:YES]; 
+0

不工作恐怕...添加[自我。tableview setEditing:NO animated:YES];似乎沒有離開編輯模式 - 屏幕凍結(沒有其他按鈕處於活動狀態)。從導航欄刪除按鈕效果不錯,但是當我添加一個新行時,按鈕會重新出現(如預期的那樣),但是作爲「完成」而不是「編輯」 – TommyG 2012-03-21 21:59:11

+0

這看起來對我來說是正確的,但是由於觸發條件不正確由原來的帖子提供。 – danh 2012-03-21 22:12:41

+0

我非常確定觸發 - 我只有在最後一行被刪除時才進入此行。除了我所描述的問題之外,這一切都可以完美解決(導航欄項目在最後一行被刪除後消失等) – TommyG 2012-03-21 22:21:04

3

可以強制在另一個回調此規則?

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 

    BOOL answer = [section count] > 1; 
    self.navigationItem.rightBarButtonItem = (answer)? self.editButtonItem : nil; 
    return answer; 
} 
+0

它被觸發。我到了那裏。 100%肯定。 – TommyG 2012-03-21 22:13:00

+0

我只記得一箇舊的項目,我有相同的要求。你可以嘗試上面的編輯嗎?在我的,我沒有一個導航欄項目,所以我添加的部分,但我檢查我的模型計數> 1,並返回生成的布爾和它的工作 – danh 2012-03-21 22:31:22

+0

好吧,我發現這個問題...我的seEditing是設置爲YES ... @ Inafzier是對的。 – TommyG 2012-03-21 22:32:24

4

根據蘋果的文檔,則不能將tableView:commitEditingStyle:forRowAtIndexPath:中調用從[self.tableview setEditing:NO animated:YES]。下面是相關的摘錄:

注:數據源不應該與它的實現的tableView:commitEditingStyle:forRowAtIndexPath:中調用setEditing:animated:。如果由於某種原因它必須在延遲後使用performSelector:withObject:afterDelay:方法調用它。

想必可以創建一個選擇器,關閉編輯模式並刪除按鈕。

1

我(主叫setEditing後沒能拿到barButtonItem的狀態恢復到「編輯」),其具有做同樣的事情的問題,並從這個答案https://stackoverflow.com/a/11490594/2888978的方式來獲得改變「編輯」回教訓中殿酒吧的「完成」是在視圖控制器上調用setEditing,而不是表格。然後,您可以將barButtonItem設置爲.None,以便在表格爲空時將其從導航欄中刪除。

調用所以不是:

self.tableView.setEditing(false, animated: true) 

你會打電話:

self.setEditing(false, animated: true) 

否則,只有細胞的編輯模式將發生變化。