我是iphone开发的新手,无法理解各种方法。我想创建一个可折叠的表格视图,只需点击一下按钮即可展开和折叠。
我的谜题中有以下内容
1)我想我必须将这两种方法用于动画
[collapsibleTableView deleteRowsAtIndexPaths:editableIndexArray withRowAnimation:UITableViewRowAnimationTop ];
[collapsibleTableView insertRowsAtIndexPaths:editableIndexArray withRowAnimation:UITableViewRowAnimationTop ];
但我不确定我需要传递给deleteRowsAtIndexPath:
方法和insertRowsAtIndexPath:
方法的论据。
2)我有一个数组,它是该表的数据源。
如果你能让我明白它究竟是如何完成的,那将是很棒的。
答案 0 :(得分:1)
得到答案,实施是
- (NSArray*)indexPathsInSection:(NSInteger)section {
NSMutableArray *paths = [NSMutableArray array];
NSInteger row;
for ( row = 0; row < [self numberOfRowsInSection:section]; row++ ) {
[paths addObject:[NSIndexPath indexPathForRow:row inSection:section]];
}
return [NSArray arrayWithArray:paths];
}
-(NSInteger)numberOfRowsInSection:(NSInteger)section {
return 4;
}
-(IBAction)expandCollapseMenu {
NSArray *paths = [self indexPathsInSection:0];
if (isExpanded) {
isExpanded=NO;
[actionBtn setTitle:@"Expand" forState:UIControlStateNormal];
[menuTblView deleteRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationFade];
}
else {
isExpanded=YES;
[actionBtn setTitle:@"Collapse" forState:UIControlStateNormal];
[menuTblView insertRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationFade ];
}
}
答案 1 :(得分:0)
通过扩展和合同,你只是意味着删除所有条目(整个表格或按部分?),或者你的意思是动画从屏幕上删除/添加tableview。
如果您的意思是删除/添加行,那么您最好的选择是拥有一个包含所有真实有效数据的数组,以及一个包含“这是用户可以看到的内容”数据的数组 - 这样您就可以清除删除/添加行时它或它的一部分。
要获取indexPaths,您可以使用[NSIndexPath indexPathForRow:<#(NSUInteger)#> inSection:<#(NSUInteger)#>]
创建单个路径并将它们推送到您传递给该方法的数组中。
只需确保在添加/删除行时保持“这是用户可以看到的内容”数组,就像tableview显示它将请求基础数据的单元格一样。