我在objective-c中有一个完美的代码,可以根据特定条件以编程方式更改所选选项卡。
-(void)loadNewView
{
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
[tabBarController setSelectedIndex:2];
[tabBarController.delegate tabBarController:tabBarController didSelectViewController:[tabBarController.viewControllers objectAtIndex:2]];
}
我试图在Swift中获得相同的功能,以下是我尝试过的代码
func loadNewView() {
var tabbarController: UITabBarController = self.window?.rootViewController as UITabBarController
tabbarController.selectedIndex = 2
var svc = tabbarController.viewControllers[2] as UINavigationController
tabbarController.delegate?.tabBarController(tabbarController, didSelectViewController:svc)
}
但是我得到了#34; [AnyObject]?没有名为subscript"的成员。我知道上面的Swift代码有问题,但有人可以帮我理解错误吗?
答案 0 :(得分:1)
Yup,[AnyObject] ?,这是一个可选数组,没有一个名为subscript的成员,但[AnyObject]没有,即你不能在可选数组上使用下标符号,所以你必须先打开它用“!”。
试试这个:
var svc = tabbarController.viewControllers![2] as UINavigationController