我曾经在 obj-c 中说过
[self.tabBarController.viewControllers objectAtIndex:1];
但现在很快就不再有 ObjectAtIndex
self.tabBarController.viewControllers.ObjectAtIndex
Update
好吧,我要让它变得简单,让我们考虑一下我有 tabBarController 它包含 2 个对象
[第一视图控制器,第二视图控制器]
我正在尝试在对象之间建立委托
这是设置委托的代码
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
...但是你可以省略!
在末尾标记并:SecondViewController
类型定义,因为它可以通过强制转换推断出来:
var svc = self.tabBarController.viewControllers[1] as SecondViewController
出现此问题的原因是您尝试转换到错误的类。
尝试打印到调试日志中对象类的名称[1]
;在强制转换之前添加此内容以检查类名:
let vcTypeName = NSStringFromClass(self.tabBarController.viewControllers[1].classForCoder)
println("\(vcTypeName)")
UPDATE:
正如我们在评论中指出的,您应该将收到的视图控制器转换为UINavigationController
:
var nc = self.tabBarController.viewControllers[1] as UINavigationController
稍后您可以检查nc.viewControllers
财产,看看是否例如它topViewController
is SecondViewController
:
if nc.topViewController is SecondViewController {
var svc = nc.topViewController as SecondViewController
// your code goes here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)