2016-11-15 4 views
0

스토리 보드 식별자를 사용하지 않고 프로그래밍 방식으로보기 컨트롤러를 인스턴스화하는 방법이 있습니까? 내 루트보기 컨트롤러 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에서 코드를 수동으로 생성하는 두 가지 옵션이 있습니다.

resuability를 위해 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)