这可能需要一点解释。我有一个 UIViewController 子类,它直接在下面包含一个标签和一个表格视图(标签和其他一些控件是我不能使用 UITableViewController 子类的原因)。因为tableview内容是动态的,所以添加的时候不能直接设置它的高度。因此,我在 loadView 中执行以下操作:
//add the table view with no size for now
tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 0, 0) style:UITableViewStyleGrouped];
tableView.dataSource = self;
tableView.delegate = self;
tableView.scrollEnabled = NO;
//now that the datasource is set, use the delegates to update the height
[tableView layoutIfNeeded];
[tableView setFrame:CGRectMake(0, self.y_position, 320, [tableView contentSize].height)];
//add it to my scrollview, which contains all controls in this view
[scrollView addSubview:tableView];
到目前为止,这很有效(尽管很高兴听到其他想法)。
当我为我的视图进入编辑模式时,问题就来了。我想修改表格视图的内容,插入一个额外的部分和行。到目前为止,我有以下 setEditing 的实现:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated{
[tableView beginUpdates];
[super setEditing:editing animated:animated];
//insert or remove the section and row
NSRange range = NSMakeRange(0, 1);
if (self.isEditing) {
[tableView insertSections:[NSIndexSet indexSetWithIndexesInRange:range] withRowAnimation:UITableViewRowAnimationAutomatic];
}
else {
[tableView deleteSections:[NSIndexSet indexSetWithIndexesInRange:range] withRowAnimation:UITableViewRowAnimationAutomatic];
}
[nameAndIngredientsTableView endUpdates];
}
额外的部分和行添加得很好,但表格视图的底部行被切断,因为它的大小尚未更新。我该怎么做?
我尝试再次使用相同的代码 - layoutIfNeeded 然后手动设置高度,但这似乎没有做任何事情
我很想知道在进入和退出编辑时动态调整表格视图大小应该看什么。