首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表视图:以编程方式setEditing

表视图:以编程方式setEditing
EN

Stack Overflow用户
提问于 2012-07-22 02:00:14
回答 1查看 727关注 0票数 0

NSMutableArray *objects包含一些我用来显示表格视图单元格内容的对象。如果objects.count为0,当为viewDidLoad时,我想启用表格视图的编辑模式

代码语言:javascript
复制
- (void)viewDidLoad {

    // If there is no content to present enable editing mode
    if (self.objects.count == 0) [self setEditing:YES animated:YES];
}

这将切换self.editButtonItem并在我的表视图中插入新行(声明“单击此处添加新元素”):

代码语言:javascript
复制
- (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];
    }
}

不幸的是,这种设置会导致崩溃:

代码语言:javascript
复制
*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-1914.85/UITableView.m:833

通过编程方式切换编辑模式是不可能的吗?如果用户触摸self.editButtonItem,一切都会正常工作--据我所知,这个editButton和我在viewDidLoad中做的是一样的。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-22 02:09:17

我认为这里有两个不同的问题。

其一,可以通过编程方式执行setEditing:animated:

但我不认为这是你真正想要做的。编辑模式是让用户手动编辑表格,并在左侧显示红色小按钮,如果您设置了这些设置,可能还会在右侧显示小移动指示器。

更好的做法是,当您发现对象已更改时,执行[self.tableView reloadData];,并确保您实现的UITableViewDataSource协议方法执行正确的操作。这将包括tableView:numberOfRowsInSection: (可能还有numberOfSections)和tableView:cellForRowAtIndexPath:的实现。这将使这些项在objects更改时出现在tableView中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11594611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档