How to access ObjectAtIndex in tabBarController with Swift?

半世苍凉 提交于 2020-01-01 04:26:09

问题


i used to say in obj-c

[self.tabBarController.viewControllers objectAtIndex:1];

but now in swift no ObjectAtIndex any more

self.tabBarController.viewControllers.ObjectAtIndex

Update

ok i am gonna make it simple lets consider i have tabBarController it contains 2 object [FirstViewController,SecondViewController] and i am trying to make a delegate between the object here is the code to set the delegate

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

when i Run , i got this error 0x1064de80d: movq %r14, %rax and no console error is showing up


回答1:


Your code is OK:

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

... however you can omit ! mark at the end and :SecondViewController type definition since it can be inferred by the cast:

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

The problem appears because you try to cast to the wrong class. Try to print to debug log name of the class of object at [1]; add this before your cast to check the class name:

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

UPDATE:

As we figured out in comments, you should cast received view controller to UINavigationController:

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

Later you can examine nc.viewControllers property and see if for instance its topViewController is SecondViewController:

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



回答2:


You don't need objectAtIndex in swift, just use the subscript operator:

self.tabBarController.viewControllers[1]


来源:https://stackoverflow.com/questions/25392803/how-to-access-objectatindex-in-tabbarcontroller-with-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!