标签栏消失在屏幕底部下方

时间:2010-05-05 20:50:04

标签: iphone uinavigationcontroller uitabbarcontroller tabbar

在我的应用程序中,我使用导航控制器推送一个加载标签栏控制器和自定义导航栏的视图。问题是标签栏消失在屏幕底部下方,我不知道是什么原因引起了问题。

如果我在下一个视图中加载一个简单的标签栏,它就会正确定位......但我需要的是标签栏控制器,在这种情况下,标签栏会消失在底部。我已经尝试更改Tab栏的视图和大小属性,但这并没有解决问题。

我也意识到标签的图片和文字没有显示(我已经设置了“收藏夹”和“联系人”图片和文字,而且它们足够大,应该在顶部可见选项卡,但它们不是。)

顺便说一句,这两个标签都很完美。

image here

我使用以下代码加载Tab栏:

- (void)viewDidLoad {
    [super viewDidLoad];
    myTabBarController = [[UITabBarController alloc] init];
    SettingsViewController* tab1 = [[SettingsViewController alloc] init];   
    AboutViewController* tab2 = [[AboutViewController alloc] init];
    NSArray* controllers = [NSArray arrayWithObjects:tab1, tab2, nil];
    myTabBarController.viewControllers = controllers;
    [self.view insertSubview:myTabBarController.view belowSubview:myNavigationBar];
}

如果我删除导航栏并不重要。我已经测试了使用它:

[self.view addSubview:myTabBarController.view];

...忘记了导航栏,但Tab栏仍然位于底部。

我不知道问题出在我的一个NIB文件中,或者我是如何加载视图的(尽管我按照Apple的SDK文档中的说法执行此操作)。有什么想法吗?

另一个问题是......你知道当我选择第二个标签时如何更改导航栏的标题?我想我必须在AboutViewController.m中的viewDidLoad中这样做,这是正确的吗?

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

请每次提交一个问题 - 这将使我们能够更好地帮助您。

对于您的第一个问题:您需要将标签栏控制器添加到导航控制器,而不是该视图。层次结构应该是:

  • 导航控制器
    • 标签栏控制器
      • 您的观点

(虽然Apple的文档表明标签栏应该是应用程序范围的,因此应该是根视图,而不是导航控制器。)

对于第二个问题,“后退”按钮上的文本由前一个视图控制器的title属性决定。要更改它,请执行以下操作(source):

- ( void )viewDidLoad
{
    [ super viewDidLoad ];

    UIBarButtonItem *backButton =
    [[ UIBarButtonItem alloc ] initWithTitle:@"Back"
                                       style:UIBarButtonItemStyleBordered
                                      target:nil
                                      action:nil ];
    self.navigationItem.backBarButtonItem = backButton;
    [ backButton release ];
}

编辑:您希望在导航堆栈中设置第二个视图控制器的标题。这很简单:

- ( void )viewDidLoad
{
    [ super viewDidLoad ];

    self.title = @"Title";
}