【问题标题】:Change UITabBar selectedItem in Swift在 Swift 中更改 UITabBar selectedItem
【发布时间】:2015-09-28 13:09:36
【问题描述】:

如何以编程方式更改 UITabBar 中的选定项?

【问题讨论】:

标签: ios swift uitabbar swift2


【解决方案1】:

Swift 3 及更高版本

从 Swift 3 开始,您还可以使用

tabBarController.selectedIndex = 0 // (or any other existing index)

(谢谢你,@nidomiro。)


Swift 2.2 及更早版本

试试下面的

tabBar.selectedItem = tabBar.items![newIndex] as! UITabBarItem

假设您可以访问拥有UITabBarUITabBarController,您可以执行以下操作

self.selectedViewController = self.viewControllers![newIndex] as! UIViewController

上面的代码行应该放在UITabBarController 子类的某个地方。

但如果您可以从“外部”访问标签栏控制器,请执行以下操作

tabBarController.selectedViewController = tabBarController.viewControllers![newIndex] as! UIViewController

【讨论】:

  • 我收到此错误:由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“不允许直接修改由标签栏控制器管理的标签栏。”
  • UITabBar 是否属于 UITabBarController?如果有,你能得到它的参考吗?
  • 太棒了!我很高兴能帮上忙。我修改了我的答案。我将其更新为使用强制向下转换运算符as!,这是 Swift 2 语法。
  • 在 Swift 3 中,以下内容对我有用:tabBarController.selectedIndex = 0(或任何其他现有索引)
  • 谢谢@nidomiro。我更新了我的答案并记入了你的功劳。
【解决方案2】:

Swift 5 及更高版本

class YOUR_TABBAR_CONTROLLER: UITabBarController {    

  override func viewDidLoad() {
  super.viewDidLoad()

  self.selectedIndex = 0 (or any other existing index)

  }
}

【讨论】:

    猜你喜欢
    • 2015-10-29
    • 1970-01-01
    • 2014-05-27
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 2016-06-15
    • 1970-01-01
    相关资源
    最近更新 更多