2012-09-06 27 views
0

一個簡單的tableviewController,爲空。可以從按鈕啓動的模式。 tableview的數據源中沒有數據,並且沒有顯示行。numberOfSectionsInTableView僅在tableview爲空的情況下在viewDidLoad中被請求

我打開模式,用它來添加一個項目,然後返回到tableview控制器。 tableview會自動更新,並顯示新行。

我添加了第二項。表格視圖不會自動更新。

我可以通過在numberOfSectionsInTableView中記錄來判斷,即使我去添加第一個項目並取消,tableview刷新 - 它要求顯示段數,行數和單元格的數量(如果有的話)。但如果表中有一個預先存在的行,則不行。

我掃了我的代碼,但無法找到任何會導致tableview知道什麼時候第一個項目被添加,但沒有任何事後。

任何想法?

編輯 - 我進一步縮小我的問題,所以將在短期內關閉這一點,併發布了一個更具體的問題在Why does an empty tableView check the number of sections but a non-empty one does not?

+0

如果tableview沒有找到數據,那麼調用它的dataSource可能會更積極些。當你添加數據時,意味着我相信你已經更新了支持數據源的數據模型,你是否發出insertRow消息,或者要求tableView重新加載它的數據。查看類文檔 - 有很多事情可以告訴tableView dataSource已更改。 –

+0

我至今都沒有 - 事實上,我做不到。假設我想要插入動畫,我需要插入一行。但是,如果tableView已經提前完成並且爲我完成了這個操作(它只對第一行添加),我將會崩潰。這一定是我的代碼中可疑的東西 - 我已經在其他TVC中確認numberOfSections不會自動調用。 –

+0

有趣 - 我前幾天做了一個測試,馬上就打電話給它 - 空桌子在這裏做另一個問題的測試。它可能是當它在後臺或隱藏的插入等得到所有搞砸了。你可以試試「reloadData」,看看它是否有效,如果有的話,稍後再討論。 –

回答

1

從蘋果公司的​​:

的UITableView覆蓋的UIView的layoutSubviews方法使其 僅在您分配新數據源時創建UITableView的新實例或 時調用reloadData。

也許你是顯示該模式後設置表視圖的數據源?因此,第二次數據源不會更改,tableView不會更新。

另一個關鍵(我不確定)可能是模態的第一次顯示。模式的-addSubview方法導致-layoutSubviews。

+0

這些都是很棒的建議 - 不幸的是沒有應用。不過謝謝。 –

相關問題