Существует ли способ мешать UIViewController быть вытолканным от стека UINavigationController, когда backBarButtonItem касается?

У меня есть UINavigationController с корневым контроллером представления, и затем я продвигаю UIViewController на стопку контроллера навигации. Когда пользователь касается backBarButtonItem, я хотел бы смочь иметь аварийное всплывающее окно представления, если существуют соблюденные определенные условия и отменяют поп контроллера представления. Например, пользователь может сделать определенные выборы, но некоторая комбинация их может быть недопустимой, таким образом, я хочу уведомить их для внесения изменений.

Я знаю, что могу препятствовать тому, чтобы пользователь делал недопустимую комбинацию, или иметь аварийное всплывающее окно представления, когда недопустимая комбинация выбрана, но я не сделал бы этого. Пользователь может изменять выборы и может знать, что определенная комбинация недопустима, но я скорее позволил им выбрать что-то, что делает комбинацию недопустимой, затем идут, изменяют что-то еще (и уведомляют их, если они не внесли изменения прежде, чем попытаться перейти к предыдущему экрану). Например, если я препятствую тому, чтобы они выбрали что-то, что делает недопустимую комбинацию затем, им, вероятно, придется прокрутить на экране, изменить что-то, затем прокрутить вниз назад вместо того, чтобы делать выбор, затем прокручивающий и изменяющий что-то.

Используя viewWillDisappear: не работает, потому что, хотя я могу произвести аварийное представление, я не могу выяснить способ препятствовать тому, чтобы поп произошел. Аварийные дисплеи представления, но контроллер представления все еще появляются, и они вернулись к корневому контроллеру представления (с аварийным отображением представления).

Существует ли способ препятствовать тому, чтобы поп произошел? В противном случае это - что-то стоящее зарегистрировать отчет об ошибках о, или действительно ли это является ненужным и/или тайным?

6
задан yabada 24 April 2010 в 04:07
поделиться

2 ответа

Это звучит как нечто более подходящее для контроллера модального представления, чем для контроллера представления в стеке навигации.

Если вы хотите делать это в стеке, было бы неплохо, если бы вы могли сделать это с помощью UINavigationControllerDelegate , но вы не можете.

Можно ли отключить кнопку «Назад» до тех пор, пока записи не станут действительными? Возможно, когда пользователь пытается что-то ввести, но это неверно, в верхней части представления у вас есть метка, анимированная на месте с красным текстом, который сообщает пользователю, что ему нужно это исправить. Между тем кнопка «Назад» отключена и снова включается после внесения исправлений.

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

1
ответ дан 10 December 2019 в 02:44
поделиться

Пусть они возвращаются, просто не сохраняйте ничего, пока оно не будет полностью достоверным. Такого подхода обычно придерживается Apple.

1
ответ дан 10 December 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: