Swift 如何以编程方式实例化视图控制器,而无需脚本

Swift 如何以编程方式实例化视图控制器,而无需脚本,swift,contactpicker,Swift,Contactpicker,有没有一种方法可以在不使用情节提要标识符的情况下以编程方式实例化视图控制器。我想将CNContactPickerController推入我的根视图控制器 let controller = CNContactPickerViewController() controller.delegate = self navigationController?.present(controller, animated: true, completion: nil) 我这样做了,但在contactPicker

有没有一种方法可以在不使用情节提要标识符的情况下以编程方式实例化视图控制器。我想将CNContactPickerController推入我的根视图控制器

let controller = CNContactPickerViewController()
controller.delegate = self
navigationController?.present(controller, animated: true, completion: nil)
我这样做了,但在contactPicker(委派)中,我从故事板推送一个VC,在那里我保存了我想要的特定联系人的信息。 问题是:当我弹出最后一个视图控制器时,我想进入CNCONTACTPICKERCONTROLLEWEW,但我进入第一个视图控制器
我尝试过使用Disclose,但没有任何结果。

这样做的问题是,没有为视图控制器创建任何用户界面。您所做的只是实例化类的一个实例。没有创建任何相应的UI,您的
IBOutlet
s也将为零

您有两个选项,要么使用Interface builder并从Nib或故事板实例化,要么在代码中手动创建ALLUI

为了可恢复性,您可以在
CNContactPickerViewController
上创建一个静态方法来为您处理脚本实例化。见下文:

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)

这样做的问题是,视图控制器的UI没有创建。您所做的只是实例化类的一个实例。没有创建任何相应的UI,您的
IBOutlet
s也将为零

您有两个选项,要么使用Interface builder并从Nib或故事板实例化,要么在代码中手动创建ALLUI

为了可恢复性,您可以在
CNContactPickerViewController
上创建一个静态方法来为您处理脚本实例化。见下文:

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)