gpt4 book ai didi

ios - 在 Swift 中访问堆栈上的 View Controller 数组

转载 作者:搜寻专家 更新时间:2023-10-31 22:36:30 28 4
gpt4 key购买 nike

基本上我正在尝试在 Swift 中执行此操作

// get the Detail view controller in our UISplitViewController (nil if not in one)
id detail = self.splitViewController.viewControllers[1];
// if Detail is a UINavigationController, look at its root view controller to find it
if ([detail isKindOfClass:[UINavigationController class]]) {
detail = [((UINavigationController *)detail).viewControllers firstObject];
}

我已经做到了;

var detail : AnyObject = self.splitViewController.viewControllers[1]

if detail.isKindOfClass(UINavigationController) {
detail = ((detail: UINavigationController).detail).

但我找不到之后该做什么。

另一个单独的快速问题。有很多以 as [type] 结尾的语句被认为是好的做法吗?这主要是由于使用 AnyObject,例如使用 valueForKeyPath。把它放在我的代码中似乎有点乱

最佳答案

下面是在 Swift 中使用可选绑定(bind)的一种方法:

// get the Detail view controller in our UISplitViewController (nil if not in one)
var detail = self.splitViewController.viewControllers[1];
// if Detail is a UINavigationController, look at its root view controller to find it
if let nav = detail as? UINavigationController {
detail = nav.viewControllers[0];
}

至于你的问题,是的,在使用 ObjC API 时,在 Swift 中到处使用 as type 是很常见的。这是从 ObjC 到强类型 Swift 语言的副产品,当更多的库用 Swift 编写并且使用更少的 ObjC 时,它应该会变得更好!

关于ios - 在 Swift 中访问堆栈上的 View Controller 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24480092/

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