如何以编程方式更改初始标签栏选择
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),但仍然没有:/以上是关于如何以编程方式更改初始标签栏选择的主要内容,如果未能解决你的问题,请参考以下文章