NSMutableArray *objects包含一些我用来显示表格视图单元格内容的对象。如果objects.count为0,当为viewDidLoad时,我想启用表格视图的编辑模式
- (void)viewDidLoad {
// If there is no content to present enable editing mode
if (self.objects.count == 0) [self setEditing:YES animated:YES];
}这将切换self.editButtonItem并在我的表视图中插入新行(声明“单击此处添加新元素”):
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
if (self.editing) {
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:[self.objects count] inSection:0]]
withRowAnimation:UITableViewRowAnimationAutomatic];
}
else {
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:[self.objects count] inSection:0]]
withRowAnimation:UITableViewRowAnimationAutomatic];
}
}不幸的是,这种设置会导致崩溃:
*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-1914.85/UITableView.m:833通过编程方式切换编辑模式是不可能的吗?如果用户触摸self.editButtonItem,一切都会正常工作--据我所知,这个editButton和我在viewDidLoad中做的是一样的。
我做错了什么?
发布于 2012-07-22 02:09:17
我认为这里有两个不同的问题。
其一,可以通过编程方式执行setEditing:animated:。
但我不认为这是你真正想要做的。编辑模式是让用户手动编辑表格,并在左侧显示红色小按钮,如果您设置了这些设置,可能还会在右侧显示小移动指示器。
更好的做法是,当您发现对象已更改时,执行[self.tableView reloadData];,并确保您实现的UITableViewDataSource协议方法执行正确的操作。这将包括tableView:numberOfRowsInSection: (可能还有numberOfSections)和tableView:cellForRowAtIndexPath:的实现。这将使这些项在objects更改时出现在tableView中。
https://stackoverflow.com/questions/11594611
复制相似问题