fuz*_*oat 7 iphone cocoa-touch objective-c
我已经设置了一个带有两个选项卡的UITabBarController,一个是简单的UIViewController,另一个是使用第二个UIViewController作为其rootController的UINavigationController(稍后将用于设置UITableView).我的问题是关于命名选项卡(即设置每个UITabBarItem的标题)
对于第一个选项卡(简单的UIViewController),我在控制器-init方法中添加了以下内容(见下文).
// FROM -[MapController init]
- (id)init {
self = [super init];
if(self) {
UITabBarItem *tabBarItem = [self tabBarItem];
[tabBarItem setTitle:@"ONE"];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
对于我添加的另一个选项卡(见下文)到第二个控制器init(rootController).
// FROM -[TableController init]
- (id)init {
self = [super init];
if(self) {
UITabBarItem *tabBarItem = [[self navigationController] tabBarItem];
[tabBarItem setTitle:@"TWO"];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
我是否将第二个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];
Run Code Online (Sandbox Code Playgroud)
EDIT_002:解决方案到目前为止,在app委托中更新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];
Run Code Online (Sandbox Code Playgroud)
EDIT_003: 有没有办法在UINavigationController中设置UITabBarItem,或者委托(看起来像)真的是最好的地方.
Mar*_*uso 10
您实际上必须自己创建tabBarItem,然后将其分配给视图控制器的tabBarItem属性.在init中尝试这个:
UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTitle:@"TWO"
image:[UIImage imageNamed:@"GT_TWO.png"]
tag:0];
self.tabBarItem = tabBarItem;
[tabBarItem release];
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
5393 次 |
| 最近记录: |