不明白为什么斯威夫特要我明确

时间:2014-06-09 16:30:44

标签: swift

我正在测试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"

有人可以向我解释为什么第一个版本不起作用吗?

由于

1 个答案:

答案 0 :(得分:8)

就像你意识到的那样,tabBar.itemsAnyObject的数组,基本上是id。你必须像对待as UITabBarItem一样向下转发它。

建议的另一种更好的方法是在开始访问之前向下转换整个阵列。所以它看起来像这样:

let tabItems = tabBar.items as [UITabBarItem]
tabItems[0].title = "First"
//...