我已經設置了一個帶有兩個選項卡的UITabBarController,一個是簡單的UIViewController,另一個是使用第二個UIViewController作爲它的rootController(稍後將用於設置UITableView)的UINavigationController。我的問題是關於命名選項卡(即設置每個UITabBarItem的標題)從UINavigationController設置UITabBarItem標題?
對於第一個選項卡(簡單的UIViewController),我已將下列(見下文)添加到controllers -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;
}
難道我設置第二tabBarItem標題在正確的地方作爲目前它沒有顯示,當我運行的第一個標籤寫着「ONE」,二是空的應用程序。另外tabBarItem(上面)顯示nil,當我打印值或通過調試器查找。
EDIT_001:從AppDelegate中
添加完整的代碼,我可以正確地從AppDelegate中內設置的UITabBarItem當我第一次創建控制器,準備增加了的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的方式或者是委託(因爲它似乎)真正做到這一點的最佳場所。在頭文件
@interface yournavController : UIViewController<UITabBarDelegate>
,並在init方法
self.navigationController.tabBar.delegate=self;
[self.navigationController.tabBar setTitle:@"TWO"];
希望這將有助於
self.navigationController.tabBarItem = tabBarItem是什麼爲我工作,如果有人想嘗試不同的解決方案! – Rabiees 2013-04-21 20:47:03