2011-10-11 72 views
0

我已經閱讀了關於UITableView和reloadData的每篇文章,並沒有發現我爲我工作過。在UITableView可見時將數據添加到UITableView?

在UI構建器中,我有一個UIViewController xib文件,裏面有一個UIView,並且在UIView上有一個UITableView。我的UIViewController子類是引用作爲xib的文件所有者。我的子類是一個UITableViewDataSource和UITableViewDelegate,並且我已經將dataSource和委託引用插座連接起來,指向UI構建器中的UITableView。我已經將構建器中的UITableView鏈接到了我的子類中定義的IBOutlet。

最初,當顯示UITableView時,我用作數據源的基礎NSMutableArray沒有數據,所以UITableView是空的。

稍後,我修改數組,並向其中添加數據。

然後我曾嘗試以下刷新UITableView的,所有的觀點都無濟於事:

  • 調用[myTableView reloadData]改變我的陣列

  • 調用[myTableView performSelectorOnMainThread後:@選擇器(reloadData)withObject:nil waitUntilDone:NO];

  • 在myTableView上調用insertRowsAtIndexPaths,因爲我可能需要實際告訴它哪一行要更新。

這些都沒有工作。但是,數據已經存在,並且所有東西似乎都已經連線好了,因爲每當我將UITableView拖動並釋放時,第一行已暫時消失,突然它在顯示時顯示預期內容。

任何想法?

+1

我的猜測是其他委託方法 - numberOfRowsInSection - 無法正確執行。或者它當然可以是numberOfSectionsInTableView。重新加載後,其中一個或兩個都將返回零。 –

+0

我還沒有實現numberOfSectionsInTableView,只有numberOfRowsInSection。我不知道numberOfSectionsInTableView是必需的,如果你只有一個部分在你的tableview中,但我會試一試(大概只需要返回1)。但是,我很懷疑,因爲如果我從一組完整的數據開始,所有的數據都會出現。在這種情況下,numberOfSectionsInTableView仍然不存在,但它的工作原理... –

+0

@ xj1200即使我有所有委託方法正常工作,最終您在這裏的正確軌道上。詳情請參閱我的回答。 –

回答

0

雖然我把所有的東西都正確地連接起來,但我追着我的尾巴。最終,問題不在於UITable,而在於底層數組被用作我的UITableView的基礎,但是使用我用來爲每個單元格生成文本的字典!

數組正在被正確更新,然後reloadData被調用。但是在調用reloadData之前,字典沒有被加載必要的數據。所以UITable被「填充」了正確的行數,但它們都顯得空白,看起來好像事情根本不起作用。

一旦我將NSLogging的拖放垃圾方法用於每次調用我的UITableView委託的調試數據時,很明顯,按預期方式調用了所有東西,但是沒有正確地爲每個單元拉取數據。

Whe!

0

我相信,你有權要求[tableView reloadData]

但是你可能要設置的[數組數]在這個方法中

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 

並在

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
cell.textLabel.text = [array objectAtIndex:indexPath];} 

這應該允許你顯示數組中的數據。

+0

是的,作爲一個代表,我已經在我的子類中實現了這些例程。他們使用一個NSMutableArray。所以這應該在這裏工作。 –