У меня есть UITabBarController с двумя вкладками, один из которых является простым UIViewController, а другой - UINavigationController, используя второй UIViewController в качестве его rootController (позже это будет использоваться для настройки UITableView). Мой вопрос заключается в том, чтобы называть вкладки (т. Е. Устанавливать заголовок каждого UITabBarItem)Настройка заголовка UITabBarItem из UINavigationController?
Для первой вкладки (простой UIViewController) я добавил следующее (см. Ниже) к методу -init контроллеров.
// FROM -[MapController init]
- (id)init {
self = [super init];
if(self) {
UITabBarItem *tabBarItem = [self tabBarItem];
[tabBarItem setTitle:@"ONE"];
}
return self;
}
Для другой вкладки я добавил (см. Ниже) ко второму контроллеру init (rootController).
// FROM -[TableController init]
- (id)init {
self = [super init];
if(self) {
UITabBarItem *tabBarItem = [[self navigationController] tabBarItem];
[tabBarItem setTitle:@"TWO"];
}
return self;
}
Am I установка второго титула tabBarItem в нужном месте, в настоящее время она не отображается, когда я запустить приложение на вкладке первой говорит «ONE» второй пустой. Также tabBarItem (выше) показывает nil, когда я печатаю значение или смотрю через отладчик.
EDIT_001: Добавлен полный код из AppDelegate
я могу правильно установить UITabBarItem внутри AppDelegate, когда я сначала создать контроллеры, готовые для добавления к UITabBarController. Но я действительно хотел сделать это в индивидуальном контроллере, используя методы для аккуратности.
// UITabBarController
UITabBarController *tempRoot = [[UITabBarController alloc] init];
[self setRootController:tempRoot];
[tempRoot release];
NSMutableArray *tabBarControllers = [[NSMutableArray alloc] init];
// UIViewController ONE
MapController *mapController = [[MapController alloc] init];
[tabBarControllers addObject:mapController];
[mapController release];
// UITableView TWO
TableController *rootTableController = [[TableController alloc] init];
UINavigationController *tempNavController = [[UINavigationController alloc] initWithRootViewController:rootTableController];
[rootTableController release];
[tabBarControllers addObject:tempNavController];
[tempNavController release];
[rootController setViewControllers:tabBarControllers];
[tabBarControllers release];
[window addSubview:[rootController view]];
[window makeKeyAndVisible];
EDIT_002: Решение до сих пор, обновление UITabBarItems в приложение делегата, например,
// TABLE CONTROLLER
TableController *tableController = [[TableController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableController];
[tableController release];
[tabBarControllers addObject:navController];
UITabBarItem *tabBarItem_002 = [navController tabBarItem];
[tabBarItem_002 setTitle:@"TWO"];
[tabBarItem_002 setImage:[UIImage imageNamed:@"GT_TWO.png"]];
[navController release];
EDIT_003: есть способ установить UITabBarItem в UINavigationController или делегат (как кажется) действительно лучшее место, чтобы сделать это.
self.navigationController.tabBarItem = tabBarItem - это то, что сработало для меня, если кто-то захочет попробовать другое решение! – Rabiees