如何在 iOS 上以编程方式创建选项卡视图

Posted

技术标签:

【中文标题】如何在 iOS 上以编程方式创建选项卡视图【英文标题】:How can I create a tab view programmatically on iOS 【发布时间】:2011-05-07 09:48:32 【问题描述】:

对于 iPhone 应用程序,我如何以编程方式创建选项卡视图,最好是在 Objective-C 中?

【问题讨论】:

【参考方案1】:

通过UITabBarController 创建一个UITabBar 非常简单。以下示例应在您的 AppDelegate 类中工作。

应用代理界面

首先,在界面中,我们将定义我们的UITabBarController。

UITabBarController *tabBarController;

应用代理实现

然后,在实现文件的application:didFinishLaunchingWithOptions: 方法中,我们将初始化我们的标签栏控制器。

// Initialise our tab bar controller
UITabBarController *tabBarController = [[UITabBarController alloc] init];

接下来,您需要创建要添加到标签栏控制器的视图控制器。我们需要在其中添加一些信息来设置选项卡的标题/图标,但我会在最后回到这一点。

// Create your various view controllers
UIViewController *testVC = [[TestViewController alloc] init];
UIViewController *otherVC = [[OtherViewController alloc] init];
UIViewController *configVC = [[ConfigViewController alloc] init];

由于 setViewControllers:animated: 方法需要一个视图控制器数组,我们将把我们的视图控制器添加到一个数组中然后释放它们。 (因为 NSarray 会保留它们。)

// Put them in an array
NSArray *viewControllers = [NSArray arrayWithObjects:testVC, otherVC, configVC, nil];
[testVC release];
[otherVC release];
[configVC release];

然后简单地为 UITabBarController 提供视图控制器数组并将其添加到我们的窗口中。

// Attach them to the tab bar controller
[tabBarController setViewControllers:viewControllers animated:NO];

// Put the tabBarController's view on the window.
[window addSubview:[tabBarController view]];    

最后,确保在 dealloc 方法中调用 [tabBarController release];

查看控制器实现

在每个视图控制器中,您还需要在 init 方法中设置选项卡的标题和图标,如下所示:

// Create our tab bar item
UITabBarItem *tabBarItem = [self tabBarItem];
UIImage *tabBarImage = [UIImage imageNamed:@"YOUR_IMAGE_NAME.png"];
[tabBarItem setImage:tabBarImage];
[tabBarItem setTitle:@"YOUR TITLE"];

【讨论】:

当我以编程方式创建自己的tabBarControllers 时,我总是为每个选项卡创建一个navigationController,并且每个navigationController 都使用rootViewController 进行初始化。在我看来,在您的示例中,由于您没有导航控制器,因此无法创建导航堆栈,但我从未尝试过这样编码。 @Wolfgang 我想这取决于您是否要将项目推送/弹出到导航堆栈。 (我的例子是一个相当低端的“只是基础”方法。) @Kiran 没问题 - 希望一切顺利。 :-)【参考方案2】:

这就是我们必须以编程方式创建标签栏的方式

UINavigationController *BandNavigationController3;
AudienceSettingsViewController *audienceSettingsViewView =[[AudienceSettingsViewController alloc]initWithNibName:@"AudienceSettingsViewController" bundle:nil];
BandNavigationController3 = [[UINavigationController alloc]initWithRootViewController:audienceSettingsViewView];
BandNavigationController3.tabBarItem.title = @"Settings";
BandNavigationController3.tabBarItem.image = [UIImage imageNamed:@"settings.png"];

[BandNavigationController3.tabBarItem initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:4];
BandNavigationController3.navigationBar.hidden = YES;

[bandTabBarArray addObject:BandNavigationController3];
[BandNavigationController3 release];
[audienceSettingsViewView release];

[tabBarController setViewControllers:bandTabBarArray]; 
[bandTabBarArray release];

【讨论】:

以上是关于如何在 iOS 上以编程方式创建选项卡视图的主要内容,如果未能解决你的问题,请参考以下文章

iOS 以编程方式转到选项卡和推送视图控制器

如何以编程方式打开视图控制器的某些选项卡

如何以编程方式使用 Swift 3 在所有视图控制器中显示选项卡栏?

以编程方式在 Swift 中的选项卡之间切换

以编程方式从模态视图控制器切换父选项卡

如何以编程方式关闭展开的表格视图单元格?