我正在我的应用程序中实现一个分组表视图,用户可以从表的不同部分选择行。
我想隐藏(删除)特定部分(包括标题),具体取决于第一部分行的选择。
即
第一部分标题是“你有车吗?”,在行选择中答案是YES或NO。 如果用户选择NO,则分组表中的第二和第三部分应隐藏(删除)。
对于分组表中的无线电选择,我实现了this
我也提到this,但没有完全满足我的需要。
请帮忙。
修改
TableViewDelegates
myArray是我的数据源。 myArrayAnswerCount包含每个部分的行数
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [myArray count];
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
for (int i = 0; i<[myArray count]; i++) {
if (section==i) {
return [[myArray objectAtIndex:i] title];
}
}
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
for (int i = 0; i<[myArray count]; i++) {
if (section==i) {
return [[myArrayAnswerCount objectAtIndex:i] intValue];
}
}
}
这是我如何从表中删除部分的代码, myIndexPath是NSIndexPath变量,它指向当前选中的部分。
[table beginUpdates];
[myArray removeObjectAtIndex:myIndexPath.section];
[table deleteSections:[NSIndexSet indexSetWithIndex:myIndexPath.section] withRowAnimation:YES];
[table endUpdates];
答案 0 :(得分:9)
我解决了我的问题。
[table beginUpdates];
[myArray removeObjectAtIndex:myIndexPath.section];
[table deleteSections:[NSIndexSet indexSetWithIndex:myIndexPath.section] withRowAnimation:UITableViewRowAnimationRight];
[table endUpdates];
“第0节中的行数无效”中的问题。更新后的现有部分中包含的行数(2)必须等于更新前该部分中包含的行数(3)“错误我忘了从myArrayAnswerCount数组中删除对象。
所以最后关注代码
[table beginUpdates];
[myArray removeObjectAtIndex:myIndexPath.section];
[myArrayAnswerCount removeObjectAtIndex:myIndexPath.section]; //this is what i forgot.
[table deleteSections:[NSIndexSet indexSetWithIndex:myIndexPath.section] withRowAnimation:UITableViewRowAnimationRight];
[table endUpdates];
感谢。
答案 1 :(得分:1)
您是否看过APPLE提供的demo。
希望它有所帮助。
答案 2 :(得分:0)
您可以在UITableViewDataSource
中查看:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView{
if(YOUR_INSTANCE_BOOL_VAR==NO){
return 1;
}else{
return 3;
}
}
用户选择NO后,将您的YOUR_INSTANCE_BOOL_VAR变为NO,然后调用[tableView reloadData]
;
显然,您还必须操纵numberOfRowsInSection
以在用户选择NO后触发您想要的行数。
另一种方法是致电:- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
您可以使用以下命令获取行indexPaths:
+ (NSIndexPath *)indexPathForRow:(NSUInteger)row inSection:(NSUInteger)section;