Таким образом, проблема в том, что когда кто-то касается кнопки «Назад» в UINavigationControler, я хотел бы запустить некоторый код для обновления источника данных.Перехват UINavigationController - popViewControllerAnimated:
Проблема в том, что я не могу найти нужного делегата для этого. только они доступны в делегате контроллера навигатора, и я хочу использовать метод типа dofinishshowing.
– navigationController:willShowViewController:animated: optional method
– navigationController:didShowViewController:animated: optional method
Следующее лучшее место, на котором я думал, является навигационной панелью, но когда я пытаюсь это сделать.
Нагрузочное приложение из-за неперехваченный исключения «NSInternalInconsistencyException», причины: «Не удается установить вручную делегата на UINavigationBar управляемого контроллера
Это имеет смысл, ретроспективно, как вы дон Не хотите, чтобы хакер возился с внутренними контроллерами навигатора и прекратил его работу.
Это обязательная проблема, и я пропустил что-то простое.
Не то, чтобы это решение, но я заметил, что если UINavigationController создается из раскадровки, вы не получаете исключение NSInternalInconsistencyException. – hyperspasm
Вы также можете заставить UINavigationController иметь собственный подкласс UINavigationBar, например.'[[UINavigationController alloc] initWithNavigationBarClass: [MyNavigationBar class] toolbarClass: nil]', а затем переопределить '- (UINavigationItem *) popNavigationItemAnimated: (BOOL) animated' в подклассе UINavigationBar. – hyperspasm