Как узнать, была ли нажата кнопка «Назад» в панели UINavigationBar? - PullRequest
0 голосов
/ 10 октября 2010

Сначала я попытался управлять им с помощью метода viewWillDisapper, но это не достаточно подробно для меня.Это другое решение?

Также пытался делегат:

- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item

, но ничего не происходит.

Ответы [ 3 ]

2 голосов
/ 10 октября 2010

Вы должны попробовать другой UINavigationBarDelegate метод делегата, –navigationBar:shouldPopItem:, и возвращать YES после выполнения всего, что вам нужно. Методы делегирования «следует» вызываются до того, как это произойдет. Методы "Did" вызываются после того, как это происходит.

Метод, который вы вызываете, не для кнопки возврата. Кнопка «Назад» будет «выдвигать» контроллер вида. Противоположность (которую вы используете) заключается в «толкании» контроллера вида. Push добавляет новый контроллер представления в стек. Pop удаляет контроллер представления из стека.

Кроме того, убедитесь, что соответствует UINavigationBarDelegate. Если ничего не случилось с методом делегата, который вы использовали, что-то настроено неправильно. AFAIK делегат должен быть автоматически настроен, если вы используете UINavigationController.

2 голосов
/ 10 октября 2010

Вам нужно изменить кнопку возврата по умолчанию, в viewDidLoad:

- (void) viewDidLoad
{
   self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                           style:UIBarButtonItemStyleBordered
                                           target:self
                                           action:@selector(handleBack:)] autorelease];
}

И, конечно, вы должны вставить контроллер в ваш метод:

- (void) handleBack:(id)sender
{
    // ... your code !

    [self.navigationController popViewControllerAnimated:YES];
}
0 голосов
/ 10 октября 2010

"Также попробовал делегата: ... но ничего не происходит." Первое, что нужно сделать, это установить точку останова внутри функции, которая, как вы подозреваете, не вызывается. Чтобы установить точку останова, просто нажмите слева от кода в xcode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...