【发布时间】:2011-11-14 22:42:22
【问题描述】:
我想知道是否可以在 UITableView 中创建所有单元格后删除空单元格(空 = 没有 textLabel 的单元格)。
【问题讨论】:
标签: objective-c ios4 xcode4
我想知道是否可以在 UITableView 中创建所有单元格后删除空单元格(空 = 没有 textLabel 的单元格)。
【问题讨论】:
标签: objective-c ios4 xcode4
为什么有空单元格?您是否使用一致的技术来控制表格中的单元格数量和这些单元格的内容?
如果您使用的是 UITableViewController,那么您的控制器会自动声明为 tableview 的数据源。如果您使用的是 UIViewController,那么您将声明它符合 UITableViewDataSource 协议(并在 Interface Builder 中将其连接起来)。
无论哪种方式,作为tableview的数据源,你的控制器都需要实现两种方法: – 表视图:cellForRowAtIndexPath: – tableView:numberOfRowsInSection:
大概您在 -tableview:cellForRowAtIndexPath: 内使用数组或其他方式为 tableview 提供数据。在此方法中,单元格的标签将从数组中的条目中设置。在 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)
【讨论】:
作为应用代理,您负责提供单元格。返回每个单元格以及表格中的单元格数量是您的责任。因此,作为应用程序委托,您应该有一种方法(无论是通过 NSMutableArray 还是其他方式)来改变您返回到表视图的数据。
【讨论】: