2013-03-01 2 views
1

В этом заключается смысл: я пишу приложение, которое «строит себя», считывая конфигурационный файл. Что мне нужно сделать, это создать UITabBarController, который содержит несколько UINavigationController s с соответствующими rootViewController. Поскольку приложение не знает, какие будут заголовки viewController, мне необходимо программно установить их (начиная с AppDelegat e) до того, как будет запущен метод viewWillAppear:.Set UINavigationItem title before viewWillAppear

Если я установил заголовок в методе viewWillAppear, то только первый v.c. в tabBarViewController покажет свое имя в tabBar.

Каков правильный способ сделать это?

+0

, что мешает вам делать это в viewdidLoad? –

+0

Поскольку до тех пор, пока соответствующая вкладка не будет загружена (щелкнув в первый раз), метод viewDidLoad для rootViewController не будет запущен. Таким образом, имя не отображается на вкладке до этого момента. – Lolloz89

ответ

1

на основе многочисленных предположений о том, что вы пытаетесь достичь, я думаю, что делать это в application:didFinishLaunchingWithOptions: методе вашего AppDelegate должен работать:

UITabBarController *cont = [[UITabBarController alloc] init]; 

for (int i=0; i<CONTROLLERS_COUNT; i++) { 
    UINavigationController *navCont = [[UINavigationController alloc] init]; 
    navCont.title = TITLE_HERE; 
    [cont addChildViewController:navCont]; 
} 

[self.window setRootViewController:cont]; 
+0

О, дорогой, ты прав! По праву это navController, который будет добавлен в TabBarController ... Спасибо! – Lolloz89

+0

Добро пожаловать. – warchimede