2013-07-22 61 views
0

我無法理解表 何時創建視圖。何時創建表視圖?

我有兩個選項卡視圖。在第二個選項卡視圖中,我有表的datasource已被 粘附到表視圖協議。

每當選中/單擊第二個選項卡時,每次點擊都調用表數據源方法 numberOfRowsInTableView

我正在使用xcode 4.2。

這是因爲每個選項卡視圖在選擇選項卡時重新創建其視圖嗎?

我在這裏錯過了什麼嗎?

回答

-1

它取決於TableView的內容是動態的還是靜態的。如果它是動態的,則在調用方法tableView:cellForRowAtIndexPath:時創建。如果內容是靜態的,則在加載視圖時創建內容。請注意,tableView:cellForRowAtIndexPath:被稱爲多次,它被稱爲數據源項的計數。希望有所幫助:)

+0

不,表視圖是在它調用'tableView:cellForRowAtIndexPath:'之前創建的。 (尚不存在的表視圖不能發送消息。)此外,Cocoa中不存在該方法。 –

+0

我知道,但我不認爲它會有用,如果有一個,對於開發人員來說重要的是內容創建時 –

1

我在理解表何時被創建時遇到了麻煩。

如果它在一個筆尖,它在加載筆尖創建的。

其實它取決於你所說的「創造」。當您將表視圖放入Xcode的nib中時創建它。保存時,Xcode將該對象歸檔到筆尖中。

然後,在運行時,當您的應用程序加載筆尖時,Cocoa將表視圖(以及筆尖中的其他所有內容)取消歸檔。解除存檔是在您的應用中存在表格視圖之後的「創建」時刻。

每當選擇/單擊第二個選項卡時,每次點擊都會調用表數據源方法numberOfRowsInTableView

到那時表格視圖已經存在。只要它變得可見,它就會發送該消息(以及其他數據源消息),無論它是否第一次變得可見。

如果您切換到不同的選項卡,表格視圖沒有任何理由顯示任何內容,所以在對模型進行更新後,它不會感到麻煩。

如果您然後切換回來,使表格視圖可見,現在表格視圖有理由顯示某些內容,所以它需要知道是否有任何內容已更改,因此它可以顯示模型的當前狀態。因此,當時它會重新檢查其數據源。