2010-06-29 21 views
2

我有一個UITableViewController子類。我在viewDidLoad方法的末尾設置了self.editing = YES,但是當顯示錶格時,在每行旁邊不會顯示小紅色的「刪除」圖標。爲什麼初始化時我的UITableView不會以編輯= YES模式啓動?

然後,我添加了一個編輯按鈕導航項目:

self.navigationItem.rightBarButtonItem = self.editButtonItem; 

現在當我啓動應用程序,它在編輯模式下啓動(我可以告訴大家,因爲編輯按鈕說「做」),但是,再次,刪除圖標不會出現。然後,如果我使用編輯按鈕切換兩次(一次關閉它,然後一次打開它),則會顯示紅色刪除圖標。

所以,我的問題是:爲什麼第一次顯示時表格單元格不能正確顯示?我試着將self.editing = YES行移動到代碼中的其他地方,如init函數或viewWillAppear函數,但沒有骰子。看起來這是某個地方有趣排序的結果(例如,在編輯之前初始化了表格單元格等),但我無法弄清楚;運行調試器顯示viewDidLoad調用發生在cellForRowAtIndexPath之前,正如人們所期望的那樣。

其他說明:

  • 是的,我有editingStyleForRowAtIndexPath回報UITableViewCellEditingStyleDelete。但從調試我已經驗證,該函數甚至不會在第一次加載後調用。 (I切換編輯模式後兩次它被調用。)
+2

你在UITableViewController子類上調用「self.editing = YES」...你不應該這樣做到TableView對象(self.tableView.editing = YES)。 。?也嘗試把它放在viewDidAppear – lukya 2010-06-29 12:14:13

+0

self.tableView與自己沒有任何作用。移動到viewDidAppear雖然工作 - 謝謝!以下更多討論。 – unsorted 2010-06-29 12:45:08

回答

2

D'哦,在viewDidAppear將其添加(或更好:viewWillAppear)訣竅。感謝@lukya和@willcodejavaforfood的建議。

我覺得很傻。我發誓我以爲我檢查過。

道德故事:過早設置編輯屬性會使頁面元素不能以編輯模式顯示。 (這不看起來像一個錯誤?)

1

嘗試使用

- (void)setEditing:(BOOL)editing animated:(BOOL)animate 

方法的UITableView

+0

切換到setEditing:動畫消息沒有任何效果,但這是一個有趣的建議(有意義的是編輯按鈕會調用該消息,並且該消息*除了setEditing:(BOOL)編輯外還可以執行其他操作。 – unsorted 2010-06-29 12:46:42

相關問題