3

设置表格视图以允许编辑很容易。只需在您的 UITableViewController 中添加一行:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

此行在导航栏上添加了一个编辑按钮,该按钮会将表格更改为编辑模式,并在编辑时将其按钮文本更改为“完成”。

是否可以在 Interface Builder 中进行设置?我看到您可以添加 UIBarButtonItem 并将其“标识符”设置为“编辑”,但我没有看到预期的行为。

顺便说一句,“属性”面板中的“标识符”有什么作用?

4

3 回答 3

1

是的,您可以在 Interface Builder 中添加 UIBarButtonItems,它们应该可以工作。

标识符允许您使用预设按钮(如编辑或重新加载),或者您可以选择自定义并制作自己的按钮。

编辑:如果您能解释如何通过 IB 添加的 UIBarButtonItems 不起作用,我可能会提供进一步的帮助。

更新: UIViewController.editButtonItem 是一种特殊方法,它返回调用视图的 setEditing 方法的 UIBarButtonItem。您可以通过创建一个执行相同操作的方法并将选择器连接到 IB 中的 UIBarButtonItem 来实现相同的效果。

在你的头文件中:

- IBAction edit:(id)sender;

并在您的实现文件中:

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

然后将选择器连接到 UIBarButtonItem。

但是,您可能无法在默认的基于导航的应用程序模板中创建此连接,因为表视图位于单独的文件中。

于 2009-02-07T19:42:51.983 回答
0

看看这里:http ://blog.tmro.net/2009/05/uitabbarbuttonitem-did-not-change-its.html

如果您希望您的按钮能够动态更改其标签,请确保您使用自定义标识符,否则其标题将是不可变的。

于 2009-05-18T06:43:53.503 回答
0

从 Xcode 9.4.1 开始,我们似乎仍然无法在 Interface Builder 中专门执行此操作。不过,在代码中很容易做到。

您根本不需要在 IB 中设置按钮。只需在您的viewDidLoad方法中添加此代码:

navigationItem.leftBarButtonItem = editButtonItem

这会自动设置“编辑”按钮,该按钮会变为“完成”,以便用户可以结束编辑。

要执行与编辑过程相关的任何自定义操作,请覆盖视图控制器的setEditing(_ editing: Bool, animated: Bool)方法。

例如,如果您有一个表格视图需要打开和关闭其编辑,您可以这样做:

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)
    tableView.setEditing(editing, animated: animated)
}

一定要super.setEditing在这里打电话。

注意:如果您使用UITableViewController,setEditing已经在超类中设置来处理表格视图。您不需要覆盖它,除非您在启用/禁用编辑时要包含其他自定义代码。

于 2018-07-30T17:56:17.770 回答