如何在没有故事板的情况下以编程方式实例化视图控制器

时间:2016-11-15 10:51:41

标签: swift contactpicker

有没有办法以编程方式实例化视图控制器而不使用故事板标识符。我想将CNContactPickerController推送到我的根视图控制器。

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

我做了这个但是在contactPicker(委托)我从故事板推送VC,我从那个特定的联系人保存我想要的信息。 问题:当我弹出最后一个视图控制器时我想继续CNConctactPickerControllerView但我继续第一个视图控制器 我试图解雇但没有任何反应......

1 个答案:

答案 0 :(得分:4)

执行此操作的问题是创建了视图控制器的UI的 NONE 。你正在做的只是实例化一个类的实例。没有创建相应的UI,您的IBOutlet也将为零。

您有2个选项,可以使用“界面”构建器并从Nib或Storyboard实例化,也可以在代码中手动创建 ALL UI。

为了恢复原状,您可以在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)