2010-10-11 3 views
2

В iOS свойство TabBar в TabBarController доступно только для чтения. Как я могу связать пользовательский элемент с определенным контроллером? Как получить доступ к UITabBarItems внутри tabBar?Настройка пользовательского UITabBarItem программно?

Как это

CustomView *custom = [[CustomView alloc] init]; 
UITabBarItem *customTab = [[UITabBarItem alloc] initWithTitle:@"Custom" image:[UIImage imageNamed:@"custom.png"] tag:0]; 
SecondView *second = [[SecondView alloc] init]; 
UITabBarItem *secondTab = [[UITabBarItem alloc] initWithTitle:@"Next" image:[UIImage imageNamed:@"next.png"] tag:1]; 
NSArray *views = [NSArray arrayWithObjects:custom,second,nil]; 
[tabBarController setViewControllers:views]; 
//how do I set the individual TabBarItems (customTab,secondTab) to be associated 
//with the views in question? tabBarController.tabBar is read only 
+0

Пытается изменить tabBar с помощью tabBar: setItems: анимированный - нет-нет. *** Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Невозможно изменить панель вкладок, управляемую контроллером панели вкладок». – Justin

ответ

5

Внутри каждого контроллера представления, вы можете установить свойство tabBarItem. Если диспетчер представлений принадлежит UITabBarViewController, соответствующий элемент на панели вкладок будет соответствующим образом обновлен.

Что-то вроде этого

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    UITabBarItem *tbi = [[UITabBarItem alloc] initWithTitle:yourTitle image:yourIcon tag:yourTag]; 
    [self setTabBarItem:tbi] 
    [tbi release]; 
} 

Вы не ограничены, чтобы выполнить эту операцию в методе viewDidLoad, очевидно.

+0

Спасибо! Apple должна сделать эту ссылку в документах в ссылке UITabBar. – Justin

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