Три20 навигация по openURLAction;self.navigationController - это ноль в заданном VC - PullRequest
0 голосов
/ 15 сентября 2010

Навигация начинается с [[TTNavigator navigator] openURLAction:theUrl]; с одного контроллера UIviewController, а другой UIViewController является целью этого URL. Карта настроена с помощью следующего кода, и нет сомнений, что навигация идет в нужное место:

TTURLMap* map = navigator.URLMap;
[map from:@"tt://goToMyViewController" toViewController:[MyViewControllerClass class]];

В контроллере push-представления я хочу манипулировать изображением с помощью кнопки «Назад», но не хочу менять заголовок. Это всегда должен быть заголовок контроллера представления, над которым он был помещен, или локализованный «Назад», если заголовок не был установлен.

Проблема: В этом запрошенном виде контроллера viewDidLoad я начинаю с

NSArray* viewControllers = self.navigationController.viewControllers;

чтобы получить стек навигации, чтобы я мог посмотреть название соответствующего контроллера вида. Но viewControllers - это ноль ...

Однако, если я ничего не делаю, кнопка возврата по умолчанию имеет правильный заголовок. Я думал о том, чтобы посмотреть на свойства заголовка leftBarButtonItem и backBarButtonItem, но там тоже нет ничего осмысленного ...

Кто-нибудь знает, что происходит, почему это происходит или как это можно обойти?

1 Ответ

1 голос
/ 16 сентября 2010

Это одна из тех вещей, где viewDidLoad - это не то место, где можно это сделать - после сравнения различных контроллеров представлений и отсутствия реальной разницы в том, как они были вызваны (хотя у них было ноль viewControllers, в то время как у других - нет)меня поразило, что если бы это было действительно ноль, popViewControllerAnimated также не должно работать.Я обнаружил, что viewControllers НЕ было ноль, где я звонил popViewControllerAnimated, и оттуда эксперимент показал, что я могу получить титул, который я получил в viewWillAppear:.Таким образом, viewWillAppear: кажется надежным местом для прикосновения self.navigationController, а viewDidLoad - нет.

...