2012-10-30 90 views
37

任何人都可以请告诉我如何设置在iOS中使用故事板时的默认选项卡。我似乎无法弄清楚如何做到这一点。使用故事板时设置默认选项卡

谢谢

+0

你是什么意思默认选项卡?您是否使用tabBarController并尝试在应用启动时选择第一个选项卡? –

+0

请确保您的问题是描述性的,并提高您的接受率。 –

+0

我使用故事板创建了一个选项卡式应用程序,并且希望将其设置为在应用程序启动时选择第二个选项卡。 – user1145581

回答

8

您可以使用这两种方法之一:

tabBar.items = tabBarItems; 
tabBar.selectedItem = [tabBarItems objectAtIndex:0]; 

或在对象

[tabBar setSelectedItem:myUITabBarItem]; 

的直接方法,或者你可以结合他们这样做的:

tabBar.items = tabBarItems; 
[tabBar setSelectedItem:[tabBarItems objectAtIndex:0]]; 

但我还没有测试过该方法,希望这有助于!

+0

如何为tabbar控制器创建插座属性?请让我知道,因为我是故事板的新手 –

+0

是的,我个人吮吸故事登机,我可以给你发送一些代码,如果你想要吗? –

+0

让我试着找到确切的代码,并把它放在pastebin,否则生病压缩它,并在我的网站上 –

21

下面的代码为我工作:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
tabBarController.selectedIndex = 2; 
+0

此代码假定rootViewController是tabBarController。这可能并非总是如此。 – oyalhi

24
  1. 创建的UITabBarController一个新的文件子类;在你的故事板的UITabBarController

    self.selectedIndex = 1;

  2. 设置这个新的文件作为自定义类:

  3. viewDidLoad末尾添加这一点。

你完成了。

+0

伟大的解决方案完美地工作! – sabir

94

虽然你可以设置初始选择的标签编程像其他的答案,实现你的故事板一样不碰代码,你将执行以下操作:

  1. 在故事板界面
  2. 选择标签栏控制器
  3. 显示身份检查的工具面板
  4. 添加一个新的“用户自定义运行属性”
  5. 将重要途径“的selectedIndex”
  6. 将类型设置为“数字”
  7. 将值设置为你想要选择的选项卡的索引(值1将选择例如第二个选项卡)
  8. 保存故事板,建立并运行应用程序

这应该是个什么样子,你已经取得了上述步骤时,如:

+1

这在Xcode 6.3,iOS 8中失败。 – friedbunny

+0

这对Xcode 6.3.1,iOS 8.3中的我仍然适用 - 有关Jason的问题的更多详细信息? –

+0

在这种情况下,我可能会感到奇怪;这是'_NSSetUsingKeyValueSetter'上的崩溃:http://pastie.org/10185899 – friedbunny

50

似乎有点小题大做了一些子类UITabBarController,但是,我认为它提供了干净的小号olution。

  1. 创建BaseTabBarController.swift
  2. 添加@IBInspectable并将其设置在viewDidLoad

    class BaseTabBarController: UITabBarController { 
    
        @IBInspectable var defaultIndex: Int = 0 
    
        override func viewDidLoad() { 
         super.viewDidLoad() 
         selectedIndex = defaultIndex 
        } 
    
    } 
    
  3. 在故事板,设置你UITabBarController是你的新的子类:

enter image description here

  • 转到属性检查员添加集的新的属性缺省索引
  • enter image description here

  • た - 天! (:
  • +0

    实际上它是一种极好的可重用性解决方案,并且足够灵活,仍然可以在需要时在代码中进行管理。 – brandonscript

    +0

    梦幻般的解决方案@Aviel。谢谢。 – iamyogish

    +0

    Annnd BOOM!有炸药 - 这工作(Xcode 7.3.1)。谢谢 – Jeeves

    1

    中的appdelegate找到applicationDidBecomeActive功能并添加此行

    let tabBarController = self.window?.rootViewController as! UITabBarController 
    tabBarController.selectedIndex = 0 // any index you want 
    
    +0

    你怎么知道rootViewController总是tabBarController? – oyalhi

    +0

    当我们使用标签栏时,默认情况下tabBarController是rootViewController。除非另有说明,否则在初始化后您更改了rootViewController – zizutg

    2

    TabBarControllerviewDidLoad(),设为selectedIndex到任何你想要的(0将是第一个,3将是第四等)

    1

    您可以通过Xcode 8或更高版本(只是测试它,不知道它在此版本之前是否可用)实现此目的

    执行步骤@Joshua芬奇说,但:

    1. 选择,而不是
    2. 得到了“用户定义运行属性”
    3. 添加新的关键
    4. 将它命名为“中所选的TabBar的栏项目“
    5. 其类型设置为布尔值,并选择真/或选中复选框
    +0

    “xcode 8或之前的版本”:您是否确实是指“之前”?这似乎与以下句子相矛盾:“如果它在此版本之前可用,则不知道”。也许你的意思是“8或更高”? –

    0

    大厦在Aviel总的回答,I J ust想要实现这个UITabBar,而不是UITabBarController。这可以做到如下:

    class BaseTabBar: UITabBar { 
    
        @IBInspectable var defaultIndex: Int = 0 { 
         didSet { 
          self.selectedItem = self.items?[defaultIndex] 
         } 
        } 
    } 
    
    相关问题