作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在测试 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"
有人可以向我解释为什么第一个版本不起作用吗?
谢谢
最佳答案
如您所知,tabBar.items
是一个 AnyObject
数组,本质上是 id
。您必须像使用 as UITabBarItem
一样向下转型。
推荐的一种更好的方法是在开始访问之前向下转换整个数组。所以它看起来像这样:
let tabItems = tabBar.items as [UITabBarItem]
tabItems[0].title = "First"
//...
关于swift - 不明白为什么swift要我说清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124635/
我是一名优秀的程序员,十分优秀!