如何使用Swift访问tabBarController中的ObjectAtIndex?

我曾经在obj-c中说过

[self.tabBarController.viewControllers objectAtIndex:1]; 

但现在在swift中没有ObjectAtIndex了

 self.tabBarController.viewControllers.ObjectAtIndex 

更新

好的,我会让它简单的让我们考虑我有tabBarController它包含2个对象[FirstViewController,SecondViewController],我想做一个委托之间的对象这里是代码来设置委托

 var Svc:SecondViewController = self.tabBarController.viewControllers[1] as SecondViewController! Svc.delegate = self 

当我运行,我得到这个错误0x1064de80d:movq%r14,%rax和没有控制台错误显示

你的代码是确定的:

 var svc:SecondViewController = self.tabBarController.viewControllers[1] as SecondViewController! svc.delegate = self 

…但是你可以省略! 标记在最后:SecondViewControllertypes定义,因为它可以被cast推断出来:

 var svc = self.tabBarController.viewControllers[1] as SecondViewController 

出现这个问题的原因是您尝试投射到错误的类。 尝试在[1]打印debugging对象类的日志名称; 添加此之前,您的转换检查类名称:

 let vcTypeName = NSStringFromClass(self.tabBarController.viewControllers[1].classForCoder) println("\(vcTypeName)") 

更新:

正如我们在注释中想到的那样,您应该将接收到的视图控制器转换为UINavigationController

 var nc = self.tabBarController.viewControllers[1] as UINavigationController 

后来你可以检查nc.viewControllers属性,看看它的topViewController是否是SecondViewController

 if nc.topViewController is SecondViewController { var svc = nc.topViewController as SecondViewController // your code goes here } 

在swift中不需要objectAtIndex ,只需使用subscript运算符:

 self.tabBarController.viewControllers[1]