我在我的 iPad 应用程序中实现了一个可扩展和可折叠的 UITableView。用户可以添加或删除一个部分。我正在删除位于部分标题上的按钮标签基础上的部分。如果我从最后一个到第一个删除部分,那么这很好,否则应用程序在第二次或第三次删除时崩溃。因为当我删除任何部分时,它不会刷新 UIButton 的标签。这是我的代码
-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section {
/*
Create the section header views lazily.
*/
// delete button.
delButton = [UIButton buttonWithType:UIButtonTypeCustom];
delButton.frame = CGRectMake(600.0, 5.0, 35.0, 35.0);
[delButton setImage:[UIImage imageNamed:@"trash.png"] forState:UIControlStateNormal];
delButton.tag = section;
[delButton addTarget:self action:@selector(deleteSectionHeader:) forControlEvents:UIControlEventTouchUpInside];
Section *aSection=[sectionArray objectAtIndex:section];
if (!aSection.sectionHeaderView) {
aSection.sectionHeaderView = [[SectionHeaderView alloc] initWithFrame:CGRectMake(0.0, 0.0, subActivityTableView.bounds.size.width, HEADER_HEIGHT) title:aSection.sectionHeader section:section delegate:self];
[aSection.sectionHeaderView addSubview:delButton];
}
return aSection.sectionHeaderView;
}
-(void)deleteSectionHeader:(UIButton*)sender{
NSInteger section = sender.tag;
[sectionArray removeObjectAtIndex:section];
[subActivityTableView deleteSections:[NSIndexSet indexSetWithIndex:section] withRowAnimation:UITableViewRowAnimationAutomatic];
// reload sections to get the new titles and tags
NSInteger sectionCount = [sectionArray count];
NSIndexSet *indexes = [NSMutableIndexSet indexSetWithIndexesInRange:NSMakeRange(0, sectionCount)];
[subActivityTableView reloadSections:indexes withRowAnimation:UITableViewRowAnimationNone];
[subActivityTableView reloadData];
}