2011-09-11 115 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