Как показать предупреждение перед тем, как UIViewController будет извлечен из UINavigationController - PullRequest
2 голосов
/ 03 августа 2011

У меня есть UINavigationController, который управляет несколькими UIViewController. Когда в верхней части окна контроллера представления и когда нажата кнопка «назад», я хочу показать UIAlertView, чтобы спросить пользователя, уверены ли они, что хотят вернуться назад. Каков наилучший способ проверить, совмещено ли представление?

Ответы [ 4 ]

4 голосов
/ 03 августа 2011

Я думаю, что нет конкретного сообщения для кнопки "Назад".
Но вы можете попытаться создать подкласс UINavigationController и затем переопределить метод popViewControllerAnimated: .(Я не пробовал.)

Другой вариант - создать пользовательскую кнопку возврата типа UIBarButtonItem и добавить цель и действие для этой кнопки.

1 голос
/ 03 августа 2011

Это можно сделать, создав подкласс UINavigationController и переопределив (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item { }

переопределение popViewControllerAnimated: слишком поздно для отмены всплывающего окна.

0 голосов
/ 03 августа 2011

А как насчет использования UINavigationControllerDelegate-Methods вроде

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

и проверьте, является ли контроллер, который должен быть нажат, таким, что ему нужно предупреждение. И наоборот, тоже будет работать!

0 голосов
/ 03 августа 2011

Я думаю, что единственный способ, который работает, это сделать скриншот вида, вырезать кнопку, а затем добавить uibutton на вашу панель навигации. Затем вы устанавливаете изображение, которое вы вырезали, как изображение кнопок, после чего вы создаете действие только с помощью uialertview. Установите свой класс как Uialertviewdelegate, и выведите viewcontroller, когда пользователь нажмет кнопку ОК, используя

- (void)alertView:(UIAlertView *)actionSheet     clickedButtonAtIndex: (NSInteger)buttonIndex {
   if (buttonIndex == 0)
    {
       //pop viewcontroller
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...