在Swift中以编程方式调用UITabBarController委托

时间:2015-01-20 11:53:10

标签: ios objective-c swift uitabbarcontroller

我在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代码有问题,但有人可以帮我理解错误吗?

1 个答案:

答案 0 :(得分:1)

Yup,[AnyObject] ?,这是一个可选数组,没有一个名为subscript的成员,但[AnyObject]没有,即你不能在可选数组上使用下标符号,所以你必须先打开它用“!”。

试试这个:

var svc = tabbarController.viewControllers![2] as UINavigationController