繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM