Как обрабатывать нажатие backBarButtonItem? - PullRequest
0 голосов
/ 14 сентября 2011

Я почти сделал это во всех приложениях, но у меня есть 3 вида, сложенных в navigationController, и мне нужно перейти от третьего вида к первому. Как я понимаю, я могу сделать это только через viewWillDisappear. Но если я попробую этот «прыжок», я получу панель navigationController из второго окна View с кнопками навигации, которые вызывают исключения / ошибки.

P.S. Не советуйте мне сделать leftBarButtonitem похожим на backBarButtonItem. Это слишком сложно, и я не знаю, где найти подходящее изображение для него.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2011

Допустим, в порядке навигации ваши представления сложены как top -> 3 -> 2 -> 1. Когда вы находитесь в этой позиции, у вас может быть флаг в делегате приложения, который показывает, что вы будете использовать doublePop при нажатии кнопки BackButton, как показано ниже: (Вы делаете это всякий раз, когда появляется третье представление в указанном вами порядке)

MyApplicationDelegate * del = [[UIApplication sharedApplication]delegate];
del.doublePopEnabled = YES;
[del release];

В представлении 2:

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];
         MyApplicationDelegate * del = [[UIApplication sharedApplication]delegate];
         if(del.doublePopEnabled){
           //Asssuming you have a reference to your navigationController in your view 2
           del.doublePopEnabled = NO;
           [del.release]
           //Use animated as no if you don't want user to see doublePopping.
           self.navigationController popViewControllerAnimated:NO];

          }
 }

Надеюсь, это поможет.

0 голосов
/ 14 сентября 2011

Насколько мне известно, у вас нет выбора, кроме как предоставить свой UIBarButtonItem. Вам не разрешается прерывать работу UINavigationController по умолчанию. То есть вы не можете переопределить поведение кнопки «назад». Вы должны предоставить пользовательский элемент кнопки панели и установить его в качестве элемента кнопки левой панели элемента навигации.

(Как примечание: искомый тип поведения может указывать на плохой шаблон навигации. Кнопки «назад» почти всегда должны последовательно выходить из иерархии навигации.)

...