gpt4 book ai didi

ios - 从 Xcode Master-Detail 项目中的 Detail View Controller 访问 Master View Controller

转载 作者:行者123 更新时间:2023-11-28 12:32:51 29 4
gpt4 key购买 nike

我正在尝试创建一个小扩展,以便我可以从详细 View Controller 访问主视图 Controller 以更新变量。

import UIKit

extension UISplitViewController {

var ggida_primaryViewController: UIViewController? {
get {
let navController = self.viewControllers.first! as? UINavigationController
return navController.topViewController!
}
}

}

我使用以下代码调用它:

let masterVC: MasterViewController? = self.splitViewController?.ggida_primaryViewController as! MasterViewController?

但是得到如下错误:

Could not cast value of type 'UINavigationController' (0x10e2c2008) to 'xxx.MasterViewController' (0x10b980350).

注意这是在 Master-Detail 项目中,由于它的导航 Controller 导致了这个问题。

谢谢

最佳答案

其中一些将取决于您实际如何配置 Storyboard以与导航 Controller 以及实际的主 Controller 和从 Controller 进行交互。苹果推荐here “安装不会更改的主要和次要 View Controller 。一种常见的技术是在 [Master 和 Detail] 位置安装导航 Controller ,然后根据需要推送和弹出新内容。”

在 Xcode 8.2 中使用全新的主从应用程序(遵循该模式),此扩展对我有用:

extension UISplitViewController {
var primaryViewController: MasterViewController? {
let navController = self.viewControllers.first as? UINavigationController
return navController?.topViewController as? MasterViewController
}
}

下面是我如何在 DetailViewController 的 viewDidLoad() 中调用它:

let masterViewController = splitViewController?.primaryViewController
print(masterViewController?.objects)

在这种情况下,每次加载 DetailViewController 时,MasterViewController 上的属性 var objects = [Any]() 都会正确打印出来。

关于ios - 从 Xcode Master-Detail 项目中的 Detail View Controller 访问 Master View Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41650592/

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