У меня есть два элемента кнопки панели, настроенные в раскадровке и подключенные к этим выходам:
@IBOutlet weak var sideMenuButton: UIBarButtonItem!
@IBOutlet weak var selectButton: UIBarButtonItem!
Когда кнопка выбора нажата, я заменяю эти кнопки двумя другими, например:
deleteButton = UIBarButtonItem(title: "Delete", style: .plain, target: self, action: #selector(deleteButtonPressed(_:)))
cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelButtonPressed(_:)))
navigationItem.leftBarButtonItem = cancelButton
navigationItem.rightBarButtonItem = deleteButton
Теперь я хочу изменить все обратно при нажатии кнопки отмены. Я пытаюсь сделать это, передавая выходы в barButtonItems:
navigationItem.leftBarButtonItem = sideMenuButton
navigationItem.rightBarButtonItem = selectButton
но это не работает и ничего не появляется. Как я могу это исправить без необходимости настраивать все кнопки в коде? Есть ли способ сбросить панель навигации или повторно создать кнопки из раскадровки?
Ваши две розетки weak
. Поэтому, когда вы их больше не используете, они становятся nil
. Удалите weak
из объявлений аутлетов, и ваш код должен работать как положено.