如何使用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 : LSwift
? LSwift
= 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(无论你想要的号码)