如何以编程方式更改初始标签栏选择

Posted

技术标签:

【中文标题】如何以编程方式更改初始标签栏选择【英文标题】:How to change initial tab bar selection programmatically 【发布时间】:2012-05-03 23:46:33 【问题描述】:

在更改应用程序的初始选项卡栏选择时遇到问题(即在应用程序启动时选择中间选项卡而不是最左侧的选项卡)。该应用程序使用情节提要,并且标签栏控制器后来通过情节提要方法在开发中添加。

tabBarController.selectedIndex = 1;

上面的代码不起作用(因为我没有连接到我的标签栏的自定义视图控制器,只有默认的 UITabBarController):

做了一些谷歌搜索并查看了许多不同的资源,但对于最初不是使用 Apple 的模板标签栏应用程序创建的应用程序,还没有完全找到解决方案。

【问题讨论】:

这是项目的初始视图控制器还是从另一个视图控制器推送? 标签栏控制器是初始视图控制器。 【参考方案1】:

由于这是初始视图控制器,并且不是子类,因此您需要在 appDelegate 中进行设置。

在 AppDelegate.m 中,将以下内容添加到您的 application:didFinishLaunchingWithOptions: 方法中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    // Override point for customization after application launch.

    // Select the left-most tab of our initial tab bar controller:
    UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
    tabBar.selectedIndex = 0;
    return YES;

【讨论】:

你太棒了。工作完美。有道理我必须在 AppDelegate 中进行,因为它是初始视图控制器。谢谢。 为了将来参考,在您需要做类似的事情并且它不是初始视图控制器的情况下,您将在视图中覆盖 prepareForSegue 在加载之前的视图中并从那里设置它。【参考方案2】:

tabBar setSelectedItem: 尝试在您的viewDidLoad 中使用它

【讨论】:

这不起作用,因为我的标签栏没有特定的视图控制器(使用 viewDidLoad 方法)。我没有为我的标签栏创建插座。它只是 Storyboards 中创建的默认设置。 我添加了一个视图 controller.h 和 .m 并将它与我的 TabBarController 连接起来。我创建了一个 UITabBarController 插座并使用了选定的索引。然后尝试了你所说的(创建一个 UITabBar 出口并使用 setSelectedItem),但仍然没有:/

以上是关于如何以编程方式更改初始标签栏选择的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式更改标签栏项目使用的默认图标?

以编程方式更改标签栏

在 viewDidLoad() 中以编程方式更改标签栏项目标题

Swift:更改标签栏的图像色调颜色?

以编程方式选择标签栏项目并显示指示器图像

如何以编程方式点击标签栏项目(未选中索引)