【发布时间】:2011-05-19 12:46:55
【问题描述】:
我有一个带有 plist 的分段表视图,它是一个充满字典的数组。 在我的应用程序中,所有部分和单元格都显示在第一个视图上。 但现在我需要将其更改为如下所示:部分必须成为单元格(带有部分名称)。当您按下此单元格时,部分中包含的单元格已出现。
有没有办法不用太多重写代码?
感谢和抱歉这个菜鸟问题:o)
【问题讨论】:
标签: objective-c ios cocoa-touch uitableview datasource
我有一个带有 plist 的分段表视图,它是一个充满字典的数组。 在我的应用程序中,所有部分和单元格都显示在第一个视图上。 但现在我需要将其更改为如下所示:部分必须成为单元格(带有部分名称)。当您按下此单元格时,部分中包含的单元格已出现。
有没有办法不用太多重写代码?
感谢和抱歉这个菜鸟问题:o)
【问题讨论】:
标签: objective-c ios cocoa-touch uitableview datasource
您将需要创建两个表视图类。一个用于保存部分名称,另一个用于保存每个部分的行。在第一个中,从 plist 中检索部分名称并相应地填充表中的行。然后在- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 方法中,您需要将另一个视图控制器推送到导航堆栈上(模板代码中提供了类似这样的东西):
// Navigation logic may go here. Create and push another view controller.
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
然后,对于另一个表视图类,您可以通过从 plist 中读取与点击部分相对应的信息来填充它。希望这会有所帮助。
【讨论】:
我了解,您仍想使用一个表格视图,其中单元格对于除一个之外的所有部分都隐藏。在这种情况下,您可以这样做:
-tableView:headerForSection: 并在您将返回的视图上放置一个按钮。在按钮标签上写下部分编号。使用参数(UIButton *)sender 向按钮添加操作:`-(void) headerPressed:(UIButton *)sender-tableView:heightforHeaderInSection:。-(void) headerPressed:(UIButton *)sender 将 senders 标签写入成员整数并重新加载 tableview。-tableview:numberOfRowsInSection: 中,如果section int 不等于您保存的成员整数,则返回0。如果相等,则返回该部分中的行数。【讨论】: