有没有办法以编程方式实例化视图控制器而不使用故事板标识符。我想将CNContactPickerController推送到我的根视图控制器。
let controller = CNContactPickerViewController()
controller.delegate = self
navigationController?.present(controller, animated: true, completion: nil)
我做了这个但是在contactPicker(委托)我从故事板推送VC,我从那个特定的联系人保存我想要的信息。 问题:当我弹出最后一个视图控制器时我想继续CNConctactPickerControllerView但我继续第一个视图控制器 我试图解雇但没有任何反应......
答案 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)