![](/img/trans.png)
[英]How do I use a UITabBarController using the same ViewController for every tab?
[英]How do I set selected tab in UITabBarController using StoryBoard?
如何使用 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 if didFinishLoading 方法中这样做:
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setSelectedIndex:3];
试一试,请告诉我结果。
*Swift Comment - 18 个月后,如果您在 appDelegate 中将 Yanchi 的解决方案转换为 Swift,您将获得预期的结果。 Swift 的翻译是:
let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController
tabBar.selectedIndex = 1
这也适用于故事板......
[self.tabBarController setSelectedIndex:3];
与此添加UITabBarControllerDelegate
在.h
然后使用这个delegate
方法
- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController
{
return (theTabBarController.selectedViewController != viewController);
}
您也可以仅使用情节提要来实现这一点。 按住 Ctrl 从 tabBarController 拖动到您的 ViewController(s),然后选择“Relationship Segue, View controllers”。 您选择的第一个 ViewController 将是默认/初始 ViewController。
我在 LSwift 中使用LSwift
:
extension UITabBarController {
@IBInspectable var selected_index: Int {
get {
return selectedIndex
}
set(index) {
selectedIndex = index
}
}
}
斯威夫特 4.1
在您的TabBarViewController
类中,您可以添加此关键行
self.selectedIndex = 0
这是我所做的(Swift 5.x):
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if let tabBarController = self.window?.rootViewController as? UITabBarController {
if let viewControllers: [UIViewController] = tabBarController.viewControllers {
tabBarController.selectedIndex = viewControllers.count-1
}
}
return true
}
斯威夫特 5.3
让tabBar
成为UITabBarController
一个实例,然后:
tabBar.selectedViewController = tabBar.viewControllers![2]
笔记:
而不是 2,把你想要的 viewController 的索引
您还可以使用情节提要在“用户定义的运行时属性”中设置默认选项卡。
从情节提要中选择您的 Tab Bar Controller,在右侧窗格中选择 Identity Inspector 并添加一个属性:
Key Path : selectedIndex Type : Number Value : 2 ( whatever number you want )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.