установите корневой viewcontroller в качестве делегата для навигационного контроллера

#iphone #ios #xcode #uinavigationcontroller #viewwillappear

#iPhone #iOS #xcode #uinavigationcontroller #появится viewwillappear

Вопрос:

Привет, я понимаю, что обычный viewWillAppear и viewDidAppear не будет вызываться, если нажать / открыть новый вид на навигационном контроллере. Я внедрил <UINavigationControllerDelegate> протокол и требуемые методы на своем контроллере корневого представления. однако мне сложно настроить корневой контроллер представления в качестве делегата навигационного контроллера. Есть ли способ сделать это программно или в раскадровке?

Я пытался

[self.navigationController setDelegate:self] из метода контроллера корневого представления viewWillAppear , но, похоже, не имеет никакого эффекта. Любой совет будет оценен.

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

1. viewWillAppear и co должны вызываться при нажатии / нажатии контроллеров просмотра.

2. ну, бывают ситуации, когда это не так, См. Здесь, например: davidebenini.it/2009/01/03 /…

3. Это сообщение ссылается на ситуацию, которая возникает, когда ваш навигационный контроллер является подразделом другого контроллера представления. Обычно это редко случается на iPhone, потому что ваш контроллер навигации всегда является корневым контроллером.

4. у меня была такая же проблема, когда я помещал свои представления в UIScrollingViewController, и эти подвиды используют панель навигации ScrollingViewController, поэтому такие ситуации существуют

Ответ №1:

Вы пробовали поместить их в viewDidLoad для вашего корневого контроллера просмотра:

 [self.navigationController viewWillAppear:NO];  //YES if you want to animate

[self.navigationController viewDidAppear:NO];