第一次发表海报。提前谢谢。
我想在我的iPhone应用程序中使用UITabBar。我被引导相信我不能使用UITabViewController,因为我将它嵌套在UINavigationController中。我读到你可以这样做,但你必须使用UITabBar而不是完整的控制器。我可以使用Interface Builder来完成这项工作,但是我有很多冗余的XIB,而且我宁愿在代码中使用它。我想知道魔法是如何运作的。
这是我的控制器的.m:
#import "DumbViewController.h"
@implementation DumbViewController
-(void) loadView {
UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 150, 30)];
[label setText:@"hello world"];
[view addSubview:label];
[label release];
UITabBar *tb = [[UITabBar alloc] initWithFrame:CGRectMake(0, [view frame].size.height - 64, [view frame].size.width, 64)];
[tb setDelegate:self];
[tb setItems:[NSArray arrayWithObject:[[[UITabBarItem alloc] initWithTitle:@"bob" image:[UIImage imageNamed:@"21-skull.png"] tag:0] autorelease]]];
[view addSubview:tb];
[tb release];
[self setView:view];
[view release];
}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSLog(@"selected item %@", item);
}
@end
当我运行应用程序时,我会在底部找到我的标签和标签栏。我得到了愚蠢的小骷髅图标,但“鲍勃”从未显示过。单击头骨可以正常工作。
为什么不显示该标题?
谢谢!
答案 0 :(得分:0)
请尝试以下代码....
UITabBarItem *someTabBarItem = [[UITabBarItem alloc] initWithTitle:@"bob" image:[UIImage imageNamed:@"21-skull.png"] tag:0];
NSArray *tabBarItems = [[NSArray alloc] initWithObjects:someTabBarItem,nil];
[tabBar setItems:tabBarItems animated:NO];
[tabBar setSelectedItem:someTabBarItem];
[tabBarItems release];
[someTabBarItem release];
答案 1 :(得分:0)
问题是我在父视图的框架之外设置了UITabBar的框架。
我在UITabBar分配行之后添加了这一行。
[tb setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin];
这里的优点是,即使我旋转或者应用程序在iPad上运行,标签栏也会停留在屏幕的底部。
我也从64像素高度变为44像素高度,因为它看起来更像XIB最初的效果。