为什么我的UITableView在初始化时似乎没有以编辑= YES模式开始?

时间:2010-06-29 12:02:23

标签: iphone cocoa-touch

我有一个UITableViewController子类。我在self.editing = YES方法的末尾设置了viewDidLoad,但是当显示该表时,每行旁边都不会出现小红色的“删除”图标。

然后,我在导航项目中添加了一个编辑按钮:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

当我立即启动应用程序时,它以编辑模式启动(我可以告诉因为编辑按钮显示“已完成”)但是,再次显示删除图标。然后,如果我用编辑按钮两次切换它(一次将其关闭,然后一次打开),则会出现红色删除图标。

所以,我的问题是:为什么第一次显示时表格单元格不能正确显示?我已尝试将self.editing = YES行移至代码中的其他位置,例如init函数或viewWillAppear函数,但没有骰子。看起来这是某个地方有趣排序的结果(例如在设置编辑之前初始化的表格单元格,或者某些东西),但我无法弄明白;运行调试程序会显示viewDidLoad调用发生在cellForRowAtIndexPath之前,正如人们所期望的那样。

其他说明:

  • 是的,我正在editingStyleForRowAtIndexPath返回UITableViewCellEditingStyleDelete。但是从调试开始我已经确认在第一次加载后甚至没有调用该函数。 (在我切换编辑模式两次后调用它。)

2 个答案:

答案 0 :(得分:2)

d'oh,将其添加到viewDidAppear(或更好:viewWillAppear)就可以了。感谢@lukya和@willcodejavaforfood的建议。

我觉得很傻。我发誓,我以为我已经检查过了。

故事的道德:过早设置编辑属性会使页面元素无法以编辑模式显示。 (这不是一个错误?)

答案 1 :(得分:1)

尝试使用

- (void)setEditing:(BOOL)editing animated:(BOOL)animate
UITableView中的

方法