2009-10-08 3 views
55

Я делаю это в UIViewController для одного из моих закладок:self.title устанавливает навигацияController и заголовок tabBarItem? Зачем?

self.title = @"Welcome"; 

Однако это перезаписывать все, что у меня есть для tabBarItem. Я пробовал:

self.tabBarItem.title = @"Home"; 

и

[self.tabBarItem initWithTitle:@"Home" image:[UIImage imageNamed:@"iconHome.png"] tag:0]; 

Но все-таки, self.title перезаписывает tabBarItem, независимо от того ли я пытаться два последних куска кода после название было задано. Код даже работает без ошибок, но self.tabBarItem.title или initWithTitle ничего не делает?

ответ

160

Хорошо, я понял это! Вот что я делаю:

self.title = @"Title for TabBarItem"; // TabBarItem.title inherits the viewController's self.title 
self.navigationItem.title = @"Title for NavigationBar"; 

navigationBar унаследует self.title, если иное не установлено с помощью self.navigationItem.title

+0

Я столкнулся с такой же проблемой при использовании UINavigationController в UITabController. Это решило это. –

+3

не знаю твой, но не работает для меня :( – cV2

+0

Это работает для меня. Отлично подходит для изменения только верхнего заголовка на основе контента, даже если контроллер вида не изменяется. – lilbyrdie

0

Try:

[self setTitle:@"Welcome"]; 

UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"Home" image:[UIImage imageNamed: image] tag:0]; 
[self setTabBarItem:item]; 
[item release]; 
+0

Хм. Не работает. «Добро пожаловать» (название для себя) всегда одинаково для tabBar. На самом деле очень расстраиваю. Я поговорил с другом-деве, который сказал, что единственный способ, которым он мог это сделать по-другому, состоял в том, чтобы установить название навигационного контроллера в IB, а затем не установить self.title в коде. Но это кажется странным. Если никто не приходит с решением здесь, я могу подать отчет об ошибке Apple. – runmad

+0

Из интереса, где вы делаете настройку панели вкладок? Образец выше - это метод init моего контроллера. Я не использую конструктор интерфейса для своих представлений (их либо пользовательские, либо созданные в loadView). Это может быть разница. – Kevin

+0

Да, я использую IB, но попытался запустить вкладки в каждом UIViewController (NavigationController). Я посмотрю, что произойдет, если я поместил вышеуказанный код в метод init в UIViewController ... – runmad

0

Я также сталкиваются с той же проблема, но я решить эту проблему, как это. Я установил заголовок и изображение tabBarItem сразу после того, как создал их в appDelegate.

Это то, что я сделал:

[viewController setTitle:@"controllerTitle"]; 
[[viewController tabBarItem] setTitle:@"Custome Title for tab"]; 
[[viewController tabBarItem] setImage:[UIImage imageNamed:@"tab.png"]]; 
52
//set nav item title 
self.navigationController.navigationBar.topItem.title = @"zurück"; 

это сделал для меня: =) (ничего из вышеперечисленного не работал)

Смежные вопросы