【问题标题】:Change order of tab bar items更改标签栏项目的顺序
【发布时间】:2019-03-20 22:32:33
【问题描述】:

我的视图底部有一个标签栏。现在我想根据 iPhone 和 iPad 更改标签栏的项目(即 iPhone 和 iPad 的不同顺序)。

viewDidLoad 中,如果我执行self.viewControllers.count 之类的操作,我会得到正确的标签栏数。但是如何从那里开始以更改我无法弄清楚的标签栏项目的顺序。我的意思是如何获取每个视图控制器的索引,以便我可以重新排列我无法弄清楚的索引...

【问题讨论】:

  • Viewcontroller 是一个数组
  • 是的 @E.Coms self.viewcontrollers 是预定义的返回一个数组..
  • viewcontrollers 不是只读的,而是像这样可变的: self.viewControllers?.sort{$0.view.tag

标签: ios swift uitabbarcontroller


【解决方案1】:

您可以通过编程方式定义您的标签栏。但首先,您应该在情节提要中为您的标签视图设置一个 id,如下图所示:

AppDelegate,didFinishLaunchingWithOptions方法中:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
// change "Main" if your storyboard's filename is different.

let vc1 = storyboard.instantiateViewController(withIdentifier: "vc1")
let vc2 = storyboard.instantiateViewController(withIdentifier: "vc2")

let tab = UITabBarController()
if UIDevice.current.model.lowercased() == "iphone" {
    tab.viewControllers = [vc1, vc2]
} else {
    tab.viewControllers = [vc2, vc1]
}

window?.rootViewController = tab

【讨论】:

  • 谢谢@p.yarandi。其实我不想换。我想要的是..如果标签栏项目的初始顺序是 [1,2,3,4,5,6],我希望它是 [1,3,5,2,4,6]
  • 欢迎@user308123。您可以通过以编程方式定义选项卡栏来做到这一点。你在为你的用户界面使用故事板吗?
  • 是的..有一个故事板有一个预定义的标签栏项目列表。但我想在运行时以编程方式更改该顺序...
猜你喜欢
  • 1970-01-01
  • 2013-11-17
  • 2016-07-27
  • 2019-03-09
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
相关资源
最近更新 更多