为什么不调用我的UITableViewController setEditing:animated:方法?

时间:2010-09-05 20:59:50

标签: cocoa-touch uitableview

我一定是在做傻事,但我看不清楚:当按下导航的编辑按钮时,我的UITableViewController子类永远不会被调用。

可能导致什么?

我的视图层次结构从Nib文件加载并放入弹出窗口。 [+]按钮连接到insertNewObject子类的UITableViewController操作。它工作正常。

但是[编辑]按钮无法连接。该文档说它将自动调用视图控制器的setEditing:animated:方法,我将覆盖它。

nib文件的设置与通常的AFAICT相同。事实上,我不确定我能提出哪些额外的细节会暗示我的错误。

点击[编辑]按钮到调用setEditing:animated方法的控制流程是什么?

1 个答案:

答案 0 :(得分:0)

我觉得我们必须错过同样的事情。

无论如何,我通过以下方式使其成功。

IBOutlet UIBarButtonItem *editButton;

-(IBAction)editButtonPressed:(id)sender {
    [self setEditing:YES animated:YES];
}

- (void)setEditing:(BOOL)editing animated:(BOOL)animate
{
    if(self.tableView.isEditing)
    {
        self.editButton.style = UIBarButtonItemStylePlain;
        self.editButton.title = @"Edit";
    }
    else
    {
        //self.editButton.style = UIBarButtonSystemItemDone;
        self.editButton.style = UIBarButtonSystemItemEdit;
        self.editButton.title = @"Done";
    }

    // Toggle table view state
    [super setEditing:!self.tableView.isEditing animated:animate];
}

我将editButton连接到我添加到导航栏的按钮,它是对editButtonPressed IBAction的操作。完成后我的setEditing:被调用(显然),超级调用切换表视图的编辑状态。

我想使用系统定义的按钮样式,但是相应的一个被注释掉,因为虽然它确实改变了样式但我无法弄清楚如何将文本从“编辑”更改为“完成”所以我有手动完成所有操作(仅当我将按钮保留为自定义并且通常设置样式时才有效)。这具有不被本地化(免费)等的缺点。