У меня есть UINavigationController с корневым контроллером представления, и затем я продвигаю UIViewController на стопку контроллера навигации. Когда пользователь касается backBarButtonItem, я хотел бы смочь иметь аварийное всплывающее окно представления, если существуют соблюденные определенные условия и отменяют поп контроллера представления. Например, пользователь может сделать определенные выборы, но некоторая комбинация их может быть недопустимой, таким образом, я хочу уведомить их для внесения изменений.
Я знаю, что могу препятствовать тому, чтобы пользователь делал недопустимую комбинацию, или иметь аварийное всплывающее окно представления, когда недопустимая комбинация выбрана, но я не сделал бы этого. Пользователь может изменять выборы и может знать, что определенная комбинация недопустима, но я скорее позволил им выбрать что-то, что делает комбинацию недопустимой, затем идут, изменяют что-то еще (и уведомляют их, если они не внесли изменения прежде, чем попытаться перейти к предыдущему экрану). Например, если я препятствую тому, чтобы они выбрали что-то, что делает недопустимую комбинацию затем, им, вероятно, придется прокрутить на экране, изменить что-то, затем прокрутить вниз назад вместо того, чтобы делать выбор, затем прокручивающий и изменяющий что-то.
Используя viewWillDisappear:
не работает, потому что, хотя я могу произвести аварийное представление, я не могу выяснить способ препятствовать тому, чтобы поп произошел. Аварийные дисплеи представления, но контроллер представления все еще появляются, и они вернулись к корневому контроллеру представления (с аварийным отображением представления).
Существует ли способ препятствовать тому, чтобы поп произошел? В противном случае это - что-то стоящее зарегистрировать отчет об ошибках о, или действительно ли это является ненужным и/или тайным?
Это звучит как нечто более подходящее для контроллера модального представления, чем для контроллера представления в стеке навигации.
Если вы хотите делать это в стеке, было бы неплохо, если бы вы могли сделать это с помощью UINavigationControllerDelegate , но вы не можете.
Можно ли отключить кнопку «Назад» до тех пор, пока записи не станут действительными? Возможно, когда пользователь пытается что-то ввести, но это неверно, в верхней части представления у вас есть метка, анимированная на месте с красным текстом, который сообщает пользователю, что ему нужно это исправить. Между тем кнопка «Назад» отключена и снова включается после внесения исправлений.
Или проявите творческий подход к тому, как работают элементы управления пользовательского интерфейса, чтобы гарантировать, что пользователь никогда не сможет ввести неверные данные.
Пусть они возвращаются, просто не сохраняйте ничего, пока оно не будет полностью достоверным. Такого подхода обычно придерживается Apple.