如何使用StoryBoard在UITabBarController中设置选定的选项卡?

如何切换到使用StoryBoard的UITabBarController某个选项卡? 我已经尝试了下面的代码,但没有成功(选项卡未选中):

 self.tabBar.selectedIndex = 3; 

老实说,我使用了没有StoryBoard的nib文件,上面的代码工作正常

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

但现在我无法编程设置选项卡。 也许还有另一个问题没有连接到选项卡。 我怎样才能切换标签?

抓住你的UITabBarController的实例,然后设置selectedViewController属性:

 yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want 

亚历山大,我认为你的问题是得到正确的标签栏的实例。 如果你的标签栏是你的根视图控制器,那么你可以在你的appdelegate中这样做,如果didFinishLoading方法:

 UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController; [tabBar setSelectedIndex:3]; 

试试看,并告诉我结果。

Swift的评论 – 18个月后,如果你在你的appDelegate中将Yanchi的解决scheme转换成Swift,你将会得到预期的结果。 Swift翻译是:

 let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController tabBar.selectedIndex = 1 

这也将工作在stroryboard …

[self.tabBarController setSelectedIndex:3]; 用这个在.h添加UITabBarControllerDelegate

然后使用这个delegate方法

 - (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController { return (theTabBarController.selectedViewController != viewController); } 

我在LSwift使用LSwift : https : LSwiftLSwift = 0

 extension UITabBarController { @IBInspectable var selected_index: Int { get { return selectedIndex } set(index) { selectedIndex = index } } } 

你也可以只用故事板来实现。 按住Ctrl键,从tabBarController拖到你的ViewController上,然后select'Relationship Segue,View controllers'。 您select的第一个ViewController将是默认的/初始的ViewController。

您还可以使用故事板在“用户定义的运行属性”中设置默认选项卡。

从故事板中select您的标签栏控制器,在右侧窗格中select标识检查器,并添加一个属性:

关键path:selectedIndex
types:数字
价值:2(无论你想要的号码)