viewWillDisappear: Определите, выталкивается ли контроллер представления или показывает контроллер подпредставления

Это добьется цели:

dir(module) 

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

for i in dir(module): print i
132
задан TheNeil 16 May 2019 в 17:32
поделиться

3 ответа

Вы можете использовать следующее.

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  NSArray *viewControllers = self.navigationController.viewControllers;
  if (viewControllers.count > 1 && [viewControllers objectAtIndex:viewControllers.count-2] == self) {
    // View is disappearing because a new view controller was pushed onto the stack
    NSLog(@"New view controller was pushed");
  } else if ([viewControllers indexOfObject:self] == NSNotFound) {
    // View is disappearing because it was popped from the stack
    NSLog(@"View controller was popped");
  }
}

Это, из Конечно, возможно, потому что стек контроллера представления UINavigationController (представленный через свойство viewControllers) был обновлен к моменту вызова viewWillDisappear.

228
ответ дан 24 November 2019 в 00:07
поделиться

Я предполагаю, что вы имеете в виду, что ваше представление перемещается вниз по стеку контроллера навигации путем нажатия нового представления, когда вы говорите, что оно помещено в стек. Я бы предложил использовать метод viewDidUnload , чтобы добавить оператор NSLog , чтобы записать что-то в консоль, чтобы вы могли видеть, что происходит, вы можете добавить NSLog в viewWillDissappeer .

-1
ответ дан 24 November 2019 в 00:07
поделиться
121

Если вы просто хотите узнать, становится ли ваш взгляд, я просто обнаружил, что Self.navigationController - Nil в ViewDidDisAppear , когда он удален из стопки контроллеров. Так что это простое альтернативное тест.

(Это я обнаруживаю после попытки всевозможных других непрерывок. Я удивлен, что нет протокола контроллера навигации, чтобы зарегистрировать контроллер просмотра, который будет уведомлен на POPS. Вы не можете использовать UinavigateControllerDelegate , потому что на самом деле Настоящий дисплей работает.)

18
ответ дан 24 November 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: