gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:29:18 26 4
gpt4 key购买 nike

我曾经在 obj-c 中说过

[self.tabBarController.viewControllers objectAtIndex:1];

但现在很快就没有 ObjectAtIndex 了

self.tabBarController.viewControllers.ObjectAtIndex

更新

好吧,我会让它变得简单让我们考虑我有 tabBarController 它包含 2 个对象[第一 View Controller ,第二 View Controller ]我正在尝试在对象之间建立一个委托(delegate)这是设置委托(delegate)的代码

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)")

更新:

正如我们在评论中发现的那样,您应该将接收到的 View Controller 转换为 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
}

关于ios - 如何使用 Swift 访问 tabBarController 中的 ObjectAtIndex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25392803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com