1

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

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

我还意识到选项卡的图像和文本不显示(我已经设置了“收藏夹”和“联系人”图像和文本,它们足够大并且应该在选项卡的顶部可见,但是他们不是)。

顺便说一句,这两个选项卡都可以正常工作。

这里有一个图像

我使用以下代码加载选项卡栏:

- (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];

...忘记导航栏,但标签栏仍然位于底部。

我不知道问题是出在我的一个 NIB 文件中还是出在我如何加载视图中(尽管我在 Apple 的 SDK 文档中阅读时这样做了)。有任何想法吗?

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

谢谢你的时间!

4

1 回答 1

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";
}
于 2010-05-05T21:33:33.547 回答