我想展开UITableView
部分,我必须展示UITableViewCells
。我该怎么做才能做到这一点?
答案 0 :(得分:6)
OR,
许多其他方法。 Apple example
答案 1 :(得分:0)
根据Vignesh的回答,我已经尝试了第二个解决方案。“在触摸部分标题时,重新加载表格,其中包含更新的行数。”
首先,声明一个数组来存储每个section的isExpanded标记。初始化,所有值都是BOOL NO.Means所有部分行都被折叠。
然后,在
中- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
方法,通过以下代码实现sectionHeader touch事件: 因为我使用自定义单元格作为节标题视图。所以这里是“单元格”,您可以使用自己的视图。
cell.tag=section;
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sectionTapped:)];
[cell addGestureRecognizer:recognizer];
cell.userInteractionEnabled=YES;
并且,在轻触sectionHeader时执行某些操作。
- (void)sectionTapped:(UITapGestureRecognizer *)recognizer
{
NSMutableArray *isSectionTouched=[[NSMutableArray alloc]initWithCapacity:_sectionExpandBool.count];
isSectionTouched=[_sectionExpandBool mutableCopy];
if ([[isSectionTouched objectAtIndex:recognizer.view.tag]boolValue]==YES) {
[isSectionTouched replaceObjectAtIndex:recognizer.view.tag withObject:[NSNumber numberWithBool:NO]];
}else if ([[isSectionTouched objectAtIndex:recognizer.view.tag]boolValue]==NO){
[isSectionTouched replaceObjectAtIndex:recognizer.view.tag withObject:[NSNumber numberWithBool:YES]];
}
_sectionExpandBool=isSectionTouched;
[self.tableView reloadData];
}
不要忘记修改numberOfRowsInSection方法。 row.count应该根据_sectionExpandBool的值更改,如果部分的ExpandBool为YES,则应返回正确的数据源数,否则返回0.
这符合我的期望。但是,我有点担心内存泄漏或其他什么,因为每次点击标题,整个表视图将重新加载。
我想知道是否有一些解决方案只能重新加载特定部分。感谢。