2011-09-11 122 views

回答

1

爲什麼你有空單元?您是否使用一致的技術來控制表格中的單元格數量和這些單元格的內容?

如果您使用的是UITableViewController,那麼您的控制器會自動聲明爲tableview的數據源。如果您使用的是UIViewController,那麼您將聲明它爲符合UITableViewDataSource協議(並在Interface Builder中進行連接)。

無論哪種方式,作爲tableview中的數據源,你的控制器實現兩個方法需要: - 的tableView:的cellForRowAtIndexPath: - 的tableView:numberOfRowsInSection:

想必你提供的實現代碼如下數據與陣列或者其他方式在-tableview:cellForRowAtIndexPath:中。在這個方法中,單元格的標籤將從數組中的一個條目中設置。在tableView:numberOfRowsInSection裏面:你將會像[myArray count]一樣來返回單元格的數量。 tableview:cellForRowAtIndexPath將被多次調用,你告訴它(由你在tableview中提供的內容決定:numberOfRowsInSection :)。如果數據源數組的變化,你想反映你的tableview中的更改,那麼您可以致電

[self.tableview reloadData]; //if inside a UITableViewController 

[self.myTableViewOutlet reloadData]; //if inside a UIViewController 

注意,reloadData重新加載整個的tableview,因此在某些情況下,這可能是計算昂貴的。在這種情況下,你可以用下面的方法來關注單個行,而不是調用reloadData:deleteRowsAtIndexPaths:withRowAnimation :(見UITableView Class Reference

+0

嘿馬特,我發現這個問題,它是一個庫,我正在使用異步加載圖像,導致單元格爲空。因爲你已經回答了我在這裏發佈的幾個問題,所以你已經半熟悉我在做什麼了:),現在我面臨的一個問題是,當我註銷一個用戶然後用另一個用戶登錄時,問題在於UITableView沒有刷新獲取新用戶事件的新數據儘管用戶的ID更新,我已經把一個reloadData在viewdidload(),任何想法爲什麼? – ahoura

+0

很難說,沒有看到你的一些代碼。您可以在新問題中發佈您的代碼。用你的代碼部分代碼來制定一個結構良好的問題通常也是一個很好的思考問題的方法。同時,爲了自己調試問題,你應該把NSLog(@「some text here」);您的tableview中的語句:cellForRowAtIndexPath:方法和viewDidLoad方法。這將幫助您瞭解什麼時候調用方法或者哪些方法不是。 – MattyG

+0

感謝您的回覆,找到了解決方案...由於某種原因,當您使用tabBar控制器時,它緩存UIView,所以我只是使用函數viewWillAppear()更新UIView。但再次感謝 – ahoura

0

隨着應用程序的委託,你是負責提供電池。您有責任返回每個單元格以及表格中的單元格數量。因此,作爲應用程序委託,您應該有一種方法(通過NSMutableArray或其他方式)來改變您返回到表視圖的數據。

+0

'app delegate'與視圖控制器的tableview應該沒什麼關係。你的意思是tableview委託和數據源? – MattyG