Как получить метод backBarButtonItem элемента навигации?

#ios #objective-c #backbarbuttonitem

#iOS #objective-c #backbarbuttonitem

Вопрос:

Я добавил navigationItem.backBarButtonItem , когда перейду на новую страницу, как в следующем коде, но я хочу добавить Timer для изменения некоторого изображения, прежде чем вернуться к первому backBarButtonItem .

     UIViewController *ReconnectView = [[AITReconnectView alloc] initWithNibName:@"AITReconnectView" bundle:nil] ;      
    ReconnectView.edgesForExtendedLayout = UIRectEdgeNone;          
    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back", nil) style:UIBarButtonItemStyleBordered target:nil action:nil];               
   [self.navigationController pushViewController:ReconnectView animated:YES];
 

Например: когда я нажимаю backBarButtonItem , он будет работать в Timer течение 3 секунд. А затем вернитесь к первому представлению.

У меня есть поиск некоторой информации, но он только перезаписывает новый метод для backBarButtonItem .

Как добавить Timer метод in backBarButtonItem , но сохранить исходный метод backBarButtonItem ?

Заранее спасибо.

Комментарии:

1. Можете ли вы поделиться своим кодом?

2. Apple не разрешает нам обрабатывать событие backBarButton . Вы можете создать backBarButton самостоятельно и установить для него значение leftBarButtonItem , а также обработать событие для него

3. Если пользователь ожидает возврата, почему вы откладываете событие?

4. @MarkRamotowski Я хочу изменить изображение и показать некоторую информацию для пользователя.

Ответ №1:

Есть два способа:

  1. Создайте свою собственную кнопку возврата (аналогичную родной) и метод выбора и назначьте его кнопке:
     UIBarButtonItem *addButton = [[[UIBarButtonItem alloc] initWithTitle:@"BackToVcA"
                                                                   style:UIBarButtonItemStyleBordered
                                                                  target:self
                                                                  action:@selector(addAction:)] autorelease];
    
    self.navigationItem.rightBarButtonItem = addButton;
     
  2. Используйте метод жизненного цикла UIViewController viewWillDisappear или viewDidDisappear .

Надеюсь, это то, что вы ищете.

Комментарии:

1. Я пытаюсь добавить таймер в viewWillDisappear или viewDidDisappear . Но представление возвращается к первому представлению и не дождалось завершения таймера. Когда представление переходит к первому представлению, таймер продолжает отсчет…

2. Я знаю первый способ, который вы публикуете. Но я не знаю, как вернуться к первому представлению с помощью кода.

Ответ №2:

  • Если вы хотите отложить переход к первому представлению на 3 секунды, просто добавьте, [NSThread sleepForTimeInterval:3.0]; к viewWillDisappear методу второго представления.
  • Если вы хотите выполнить вызов метода в objective C, тогда [self performSelector:@selector(methodName) withObject:self afterDelay:3.0]; все должно работать нормально. Поделитесь кодом для получения дополнительной информации.