我正在测试swift并且不明白为什么以下行不起作用。
let tabBarController = UITabBarController()
tabBarController.viewControllers = [MyViewController1(), MyTableViewController2()]
tabBarController.tabBar.items[0].title = "First"
tabBarController.tabBar.items[1].title = "Second"
编译器告诉我:Could not find member 'title'
如果我将参数分成多个变量,那么它就可以了。
let tabBarController = UITabBarController()
tabBarController.viewControllers = [MyViewController1(), MyTableViewController2()]
let tabBar = tabBarController.tabBar
let tabBarItem0 = tabBar.items[0] as UITabBarItem
let tabBarItem1 = tabBar.items[1] as UITabBarItem
tabBarItem0.title = "First"
tabBarItem1.title = "Second"
有人可以向我解释为什么第一个版本不起作用吗?
由于
答案 0 :(得分:8)
就像你意识到的那样,tabBar.items
是AnyObject
的数组,基本上是id
。你必须像对待as UITabBarItem
一样向下转发它。
建议的另一种更好的方法是在开始访问之前向下转换整个阵列。所以它看起来像这样:
let tabItems = tabBar.items as [UITabBarItem]
tabItems[0].title = "First"
//...