我有一个UITableViewController子类。我在self.editing = YES
方法的末尾设置了viewDidLoad
,但是当显示该表时,每行旁边都不会出现小红色的“删除”图标。
然后,我在导航项目中添加了一个编辑按钮:
self.navigationItem.rightBarButtonItem = self.editButtonItem;
当我立即启动应用程序时,它以编辑模式启动(我可以告诉因为编辑按钮显示“已完成”)但是,再次显示删除图标。然后,如果我用编辑按钮两次切换它(一次将其关闭,然后一次打开),则会出现红色删除图标。
所以,我的问题是:为什么第一次显示时表格单元格不能正确显示?我已尝试将self.editing = YES
行移至代码中的其他位置,例如init
函数或viewWillAppear
函数,但没有骰子。看起来这是某个地方有趣排序的结果(例如在设置编辑之前初始化的表格单元格,或者某些东西),但我无法弄明白;运行调试程序会显示viewDidLoad
调用发生在cellForRowAtIndexPath
之前,正如人们所期望的那样。
其他说明:
editingStyleForRowAtIndexPath
返回UITableViewCellEditingStyleDelete
。但是从调试开始我已经确认在第一次加载后甚至没有调用该函数。 (在我切换编辑模式两次后调用它。)答案 0 :(得分:2)
d'oh,将其添加到viewDidAppear
(或更好:viewWillAppear
)就可以了。感谢@lukya和@willcodejavaforfood的建议。
我觉得很傻。我发誓,我以为我已经检查过了。
故事的道德:过早设置编辑属性会使页面元素无法以编辑模式显示。 (这不是一个错误?)
答案 1 :(得分:1)
尝试使用
- (void)setEditing:(BOOL)editing animated:(BOOL)animate
UITableView中的方法