Вы можете установить кнопку редактирования навигационной панели в Интерфейсном Разработчике? - PullRequest
3 голосов
/ 07 февраля 2009

Достаточно легко настроить представление таблицы, чтобы разрешить редактирование. Просто добавьте одну строку в ваш UITableViewController:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

В этой строке добавляется кнопка редактирования на панели навигации, которая переводит таблицу в режим редактирования и меняет текст ее кнопки на «Готово» во время редактирования.

Возможно ли настроить это в Интерфейсном Разработчике? Я вижу, что вы можете добавить UIBarButtonItem и установить его «Идентификатор» на «Редактировать», но я не вижу ожидаемого поведения.

Кстати, что делает «Идентификатор» на панели «Атрибуты»?

Ответы [ 3 ]

1 голос
/ 07 февраля 2009

Да, вы можете добавить UIBarButtonItems в Интерфейсный Разработчик, и они должны работать.

Идентификатор позволяет использовать предустановленную кнопку (например, «Редактировать» или «Перезагрузить») или выбрать «Пользовательский» и создать собственную кнопку.

РЕДАКТИРОВАТЬ: Я мог бы помочь в дальнейшем, если вы могли бы объяснить, как UIBarButtonItems, добавленные через IB, не работают.

ОБНОВЛЕНИЕ: UIViewController.editButtonItem - это специальный метод, который возвращает UIBarButtonItem, который вызывает метод setEditing представления. Вы можете добиться того же эффекта, создав метод, который делает то же самое, и подключив селектор к вашему UIBarButtonItem в IB.

В вашем заголовочном файле:

- IBAction edit:(id)sender;

и в вашем файле реализации:

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

затем подключите селектор к UIBarButtonItem.

Однако вы не сможете создать это соединение в стандартном шаблоне приложения на основе навигации, поскольку табличное представление находится в отдельном файле.

0 голосов
/ 30 июля 2018

Мы все еще не можем сделать это специально в Интерфейсном Разработчике с XCode 9.4.1. Это очень просто сделать в коде.

Вам вообще не нужно настраивать кнопку в 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 для обработки табличного представления. Вам не нужно переопределять его, если у вас нет другого пользовательского кода, который вы хотите включить, когда редактирование включено / отключено.

0 голосов
/ 18 мая 2009

Посмотрите здесь: http://blog.tmro.net/2009/05/uitabbarbuttonitem-did-not-change-its.html

Если вы хотите, чтобы ваша кнопка могла динамически изменять метку, убедитесь, что вы используете пользовательский идентификатор, иначе ее заголовок будет неизменным.

...