24

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

self.tabBar.selectedIndex = 3;

老实说,我使用没有 StoryBoard 的 nib 文件,上面的代码在

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

但现在我无法以编程方式设置选项卡。也许还有另一个与选择选项卡无关的问题。如何切换标签?

4

10 回答 10

38

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

yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want
于 2013-07-29T09:00:11.423 回答
18

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

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

试一试,请告诉我结果。

于 2013-07-29T13:59:46.930 回答
12

*Swift Comment - 18 个月后,如果您在 appDelegate 中将 Yanchi 的解决方案转换为 Swift,您将获得预期的结果。斯威夫特翻译是:

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

tabBar.selectedIndex = 1
于 2015-05-10T05:20:21.970 回答
4

这也适用于故事板......

[self.tabBarController setSelectedIndex:3];UITabBarControllerDelegate有了这个添加.h

然后使用这个delegate方法

- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController
{
    return (theTabBarController.selectedViewController != viewController);
}
于 2013-08-12T11:46:28.623 回答
3

斯威夫特 4.1

在您的TabBarViewController班级中,您可以添加此关键行

self.selectedIndex = 0
于 2018-08-27T14:34:19.757 回答
2

您也可以仅使用情节提要来实现这一点。按住 Ctrl 键从 tabBarController 拖动到您的 ViewController(s),然后选择“Relationship Segue,View controllers”。您选择的第一个 ViewController 将是默认/初始 ViewController。

于 2014-07-10T15:16:43.643 回答
2

我正在使用 IBInspected LSwift

extension UITabBarController {
    @IBInspectable var selected_index: Int {
        get {
            return selectedIndex
        }
        set(index) {
            selectedIndex = index
        }
    }
}
于 2015-05-21T00:55:00.480 回答
1

斯威夫特 5.3

让我们tabBar成为UITabBarControllerthen 的一个实例:

tabBar.selectedViewController = tabBar.viewControllers![2]

注意:
而不是 2,把你想要的 viewController 的索引

于 2020-11-30T12:31:46.820 回答
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
    }
于 2020-11-04T16:22:01.717 回答
-1

您还可以使用情节提要在“用户定义的运行时属性”中设置默认选项卡。

从情节提要中选择您的 Tab Bar Controller,在右侧窗格中选择 Identity Inspector 并添加一个属性:

关键路径:selectedIndex
类型:数字
值:2(你想要的任何数字)
于 2016-07-11T06:57:59.757 回答