Как открыть UIAlertView, когда была нажата кнопка «Назад» на панели UINavigationBar (контролируемой UINavigationController)?При определенных условиях я хочу спросить пользователя «Вы уверены?»тип вопроса, чтобы он мог либо прервать действие и остаться в текущем представлении, либо открыть стек навигации и перейти к родительскому представлению.
Самый привлекательный подход, который я нашел, заключался в переопределении ShouldPopItem () в делегате UINavigationBar.
Теперь здесь есть довольно похожий вопрос: iphone navigationController: дождитесь ответа uialertview, прежде чем выйти из текущего представления
Есть также несколько других вопросов аналогичногоnature, например здесь: Проверка того, что UIViewController собирается получить Popped из стека навигации? и Как узнать, когда кнопка назад нажата в UINavigationControllerStack
Все эти состояния "подкласс UINavigationController" как возможные ответы.
Тогда есть этот, который читается как подкласс UINavigationController, как правило, не очень хорошая идея: Monotouch: UINavigationController, переопределить initWithRootViewController
яблочные документы aЯ также говорю, что UINavigationController не предназначен для использования в качестве подкласса.
Некоторые другие утверждают, что переопределение ShouldPopItem () даже невозможно при использовании UINavigationController, поскольку это не позволяет назначать пользовательский / подклассированный UINavigationBarDelegate для UINavigationBar.
Ни одна из моих попыток создания подкласса не сработала, мой пользовательский Делегат не был принят.
Я также где-то читал, что может быть возможно реализовать ShouldPopItem () в моем пользовательском UINavigationController, поскольку он назначает себя какДелегат его UINavigationBar.
Не удивительно, это не сработало.Как подкласс UINavigationController узнает о методах, принадлежащих UINavigationBarDelegate.Было отклонено: «не найдено подходящего метода для переопределения».Удаление ключевого слова override скомпилировано, но метод полностью игнорируется (как и ожидалось).Я думаю, что с Obj-C можно реализовать несколько протоколов (аналогично интерфейсам в C # AFAIK) для достижения этой цели.К сожалению, UINavigationBarDelegate - это не интерфейс, а класс в MonoTouch, так что это кажется невозможным.
Я в значительной степени потерян здесь.Как переопределить mustPopItem () в делегате UINavigationBar, когда он контролируется UINavigationController?Или есть какой-либо другой способ вызвать UIAlertView и дождаться его результата, прежде чем, возможно, отобразить стек навигации?