2016-11-15 7 views
0

ストーリーボードIDを使用せずにプログラムによってビューコントローラーをインスタンス化する方法はありますか? CNContactPickerControllerをルートビューコントローラにプッシュしたいと思います。ストーリーボードを使用せずにプログラムを使用してビューコントローラーをインスタンス化する方法

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

私はこれをしなかったが、contactPicker(代理人)に私はその特定の連絡先から私が欲しいものの情報保存ストーリーボードからVCを押してください。 問題:私はCNConctactPickerControllerViewに行きたいけど、私は却下と試みたが、何も起こりません最初のビューコントローラ に行く最後のビューコントローラ..

答えて

3

をポップするとき、これを行うと、問題はそのNONEですビューコントローラ用のUIが作成されます。あなたがやっていることは、単にクラスのインスタンスをインスタンス化することです。対応するUIは作成されず、IBOutletもゼロになります。

インターフェイスビルダーを使用してNibまたはストーリーボードからインスタンシエーションするか、ALL UIでコードを手動で作成するかの2つのオプションがあります。

リユーザビリティのために、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) 
関連する問題