gpt4 book ai didi

swift - 如何在没有 Storyboard的情况下以编程方式实例化 View Controller

转载 作者:行者123 更新时间:2023-11-28 10:16:32 24 4
gpt4 key购买 nike

有没有一种方法可以在不使用 Storyboard 标识符的情况下以编程方式实例化 View Controller 。我想将 CNContactPickerController 推送到我的 Root View Controller 中。

let controller = CNContactPickerViewController()
controller.delegate = self
navigationController?.present(controller, animated: true, completion: nil)

我这样做了,但在 contactPicker(委托(delegate))中,我从 Storyboard 中推送了一个 VC,我在其中保存了我想要从该特定联系人那里获得的信息。问题:当我弹出最后一个 View Controller 时,我想继续 CNConctactPickerControllerView 但我继续第一个 View Controller 我尝试解雇但没有任何反应..

最佳答案

这样做的问题是为您的 View Controller 创建了 NONE UI。您所做的只是实例化该类的一个实例。没有创建相应的 UI,您的 IBOutlet 也将为 nil。

您有 2 个选择,要么使用界面构建器并从 Nib 或 Storyboard 实例化,要么在代码中手动创建所有您的 UI。

为了可重用性,您可以在 CNContactPickerViewController 上创建一个静态方法来为您处理 Storyboard实例化。请参阅以下内容:

class CBContactPickerViewController: UIViewController {

static func fromStoryboard() -> CNContactPickerViewController {
return UIStoryboard(name: "foobar", bundle: nil).instantiateViewController(identifier: "CNContactPickerViewController") as! CNContactPickerViewController
}
}

然后您可以按如下方式使用它:

self.present(viewController: CNContactPickerViewController.fromStoryboard(), animated: true, completion: nil)

关于swift - 如何在没有 Storyboard的情况下以编程方式实例化 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40607951/

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