【问题标题】:UIViewController Edit button status always sameUIViewController 编辑按钮状态始终相同
【发布时间】:2012-10-01 16:03:34
【问题描述】:

我在应用的导航栏中添加了一个编辑按钮。

我有一个实现 UITableViewDataSource 和 UITableViewDelegate 的 UIViewController。

我使用情节提要添加了 UITableView,并与数据源和委托建立了连接。

我在视图控制器的实现文件中这样做了:

self.navigationItem.rightBarButtonItem = self.editButtonItem;
[self.editButtonItem setAction:@selector(setEditing:animated:)];

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    DLog(@"Editing = %d", editing)
    NSLog(editing ? @"Yes" : @"No");

    [self.recentSearchList setEditing:editing animated:YES];
}

问题是每当我点击编辑按钮时,布尔变量“编辑”总是“是”。首先,它将 UITableView 设置为编辑模式,但编辑按钮仍显示“编辑”标签而不是“完成”。而且由于参数始终为 YES,表格视图永远不会设置为普通模式。

我在这里阅读了一个答案:UITableView in edit mode - 'Edit' button doesn't change status

我假设编辑按钮应该在点击时改变其状态。并且被覆盖方法中的参数也应该切换。

我可以编写自己的代码在 UIViewController 中设置标志以检查模式并相应地切换 tableView,但我假设必须有其他方式。

【问题讨论】:

    标签: iphone objective-c ios uitableview uiviewcontroller


    【解决方案1】:

    来自文档

    同时删除[self.editButtonItem setAction:@selector(setEditing:animated:)];这一行

    editButtonItem 与方法 - (void)setEditing:(BOOL)editing animated:(BOOL)animated 隐式关联。

    所以你只需要重写该方法并按照文档所述在顶部调用 super 的实现。

    【讨论】:

      【解决方案2】:

      我想如果你仔细观察你会发现编辑实际上是对控件本身的引用。

      当您在 UIControl 上调用 setAction(在这种情况下是您的右键)时,您的目标可以具有以下签名之一。

      - (void)action
      - (void)action:(id)sender
      - (void)action:(id)sender forEvent:(UIEvent *)
      

      您必须在此方法中单独处理编辑模式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-17
        • 1970-01-01
        • 1970-01-01
        • 2014-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多