以编程方式在点击时选择的 UITabBar 视图

Posted

技术标签:

【中文标题】以编程方式在点击时选择的 UITabBar 视图【英文标题】:UITabBar view programmatically chosen on tap 【发布时间】:2009-05-09 12:41:57 【问题描述】:

我有一个基于导航控制器的应用程序。我决定在我的应用程序中使用标签栏。

当用户按下某个标签栏项目时,我想显示某个视图控制器 - 我想在我的代码中以编程方式选择要显示的那个。

我试图在 Interface Builder 中将导航控制器添加到我的标签栏,但它的视图控制器的 viewWillAppear 没有被调用。

如何实现此功能?

【问题讨论】:

【参考方案1】:

我不知道这是否是“正确的方式”,但这是我通常使用三个选项卡执行此操作的方式。

- (void)initControls 
    // Create the window.
    [self setWindow:[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]];

    // Create Tab Bar.
    tabCon = [[UITabBarController alloc] init];

    // Local array variable that holds the viewcontrollers.
    // Capacity corresponds to the number of VC's
    NSMutableArray *localVCArray = [[NSMutableArray alloc] initWithCapacity:3];

    MyFirstViewController *oneViewController = [[MyFirstViewController alloc] init];
    UINavigationController *oneNavCon = [[UINavigationController alloc] initWithRootViewController:oneViewController];
    [localVCArray addObject:oneNavCon];
    [oneViewController release];
    [oneNavCon release];

    MySecondViewController *twoViewController = [[MySecondViewController alloc] init];
    UINavigationController *twoNavCon = [[UINavigationController alloc] initWithRootViewController:twoViewController];
    [localVCArray addObject:twoNavCon];
    [twoViewController release];
    [twoNavCon release];

    MyThirdViewController *threeViewController = [[MyThirdViewController alloc] init];
    UINavigationController *threeNavCon = [[UINavigationController alloc] initWithRootViewController:threeViewController];
    [localVCArray addObject:threeNavCon];
    [threeViewController release];
    [threeNavCon release];

    // Set the tab bars array of view controllers to the localVCArray
    [[self tabCon] setViewControllers:localVCArray animated:YES];

    // Release the localVCArray, all of its contents are now retained by tabCon.
    [localVCArray release];

    // Add controls to window and show.
    [window addSubview:[tabCon view]];
    [window makeKeyAndVisible];

在每个 viewController 的 init 方法中,您可以执行以下操作:

[[self tabBarItem] setImage:[dataSource tabConImg]];
[[self tabBarItem] setTitle:[dataSource name]];
[[self navigationItem] setTitle:[dataSource navConName]];

设置标签栏使用的图标、标签栏的标题、导航项的标题。

【讨论】:

以上是关于以编程方式在点击时选择的 UITabBar 视图的主要内容,如果未能解决你的问题,请参考以下文章

UITabbar 以编程方式选择选项卡并执行egue

当 UITabBar 不是 rootViewController 时,如何以编程方式将 UITabBar 与具有 NIB 的不同 ViewController 链接

在呈现模态视图时显示 UITabBar

UITableView中的UITabBar MoreViewController图像在以编程方式选择后消失

无法看到控制器以编程方式快速添加到 UITabBar

如何在 iPhone 上设置第一个以编程方式选择的 TabBar