Ios 手动设置UITabBar选定项目时遇到问题
我正在视图控制器中实现一个自定义的Ios 手动设置UITabBar选定项目时遇到问题,ios,swift,Ios,Swift,我正在视图控制器中实现一个自定义的uitabar。我成功地将uitabar委托设置为UIViewController 但是,在viewDidLoad上,我希望使用以下选项选择UITabBar的第一项: tabBar.selectedItem = tabBar.items[0] as UITabBarItem 但我一直遇到这个错误 (UITabBar, didSelectItem: UITabBarItem) -> ()' does not have a member named 'se
uitabar
。我成功地将uitabar
委托设置为UIViewController
但是,在viewDidLoad上,我希望使用以下选项选择UITabBar的第一项:
tabBar.selectedItem = tabBar.items[0] as UITabBarItem
但我一直遇到这个错误
(UITabBar, didSelectItem: UITabBarItem) -> ()' does not have a member named 'selectedItem'
这是我的密码:
class ViewController: UIViewController, UITabBarDelegate {
@IBOutlet var tabBar : UITabBar!
@IBOutlet var placeHolderView : UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
tabBar.selectedItem = tabBar.items[0] as UITabBarItem
switchView(0)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
switch item.tag {
case 0:
switchView(0)
break
case 1:
switchView(1)
break
default:
break
}
}
...
}
更新:
让这个工作:
tabBar.selectedItem = tabBar.items![0] as? UITabBarItem
我仍然需要了解optionals…我发现这个解决方案很有效:
override func viewDidLoad() {
super.viewDidLoad()
for i in tabBar.items as [UITabBarItem]){
if i.tag == 0 {
tabBar.selectedItem = i
break;
}
}
switchView(0)
}
我认为问题在于uitabar.items是可选的,因此需要将其展开才能访问阵列
tabBar.selectedItem = tabBar.items![0] as UITabBarItem
非常感谢。然而,我仍然很好奇为什么我最初的努力没有奏效。我认为你必须访问项目的
标记
属性,而不是你所做的。谢谢你。这也行得通,但我得到了警告:将对“uitabaritem”的强制向下转换视为可选将永远不会产生“nil”,并用以下命令修复:tabBar.selectedItem=tabBar.items![0]作为?uitabaritemany当您在一个对象上看到“没有一个名为的成员”时,您非常确定它确实存在,首先要检查的是您是否真的在处理一个可选的。