为什么不显示UITabBarItem的标题?

时间:2011-09-01 04:32:22

标签: iphone ios cocoa-touch ipad

第一次发表海报。提前谢谢。

我想在我的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

当我运行应用程序时,我会在底部找到我的标签和标签栏。我得到了愚蠢的小骷髅图标,但“鲍勃”从未显示过。单击头骨可以正常工作。

为什么不显示该标题?

谢谢!

2 个答案:

答案 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最初的效果。