Загрузите UIViewController из отдельного файла nib в swift?

Я взял один ViewController с отдельным файлом nib. и мой исходный корневой диспетчер представлений установлен в storyBoard. Теперь проблема в том, что когда я нажимаю на этот контроллер, методы View rentachy не вызывают (ViewDidLoad, ViewWillApper и т.д.).

Код (просмотр загружен, но методы не вызывают)

var viewController = UIViewController(nibName: "OfferDetailViewController", bundle: nil) as OfferDetailViewController
 self.navigationController?.pushViewController(viewController, animated: true);

То же самое, если я делаю с раскадрой его работу отлично.

    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    var viewController = mainStoryboard.instantiateViewControllerWithIdentifier("offer") as OfferDetailViewController     
   self.navigationController?.pushViewController(viewController, animated: true);

Проблема. С раскадрой. Просмотр методов иерархии вызывает, но не с отдельным файлом nib?

Ответ 1

var viewController = OfferDetailViewController(nibName: "OfferDetailViewController", bundle: nil)

Ответ 2

Вот хороший общий подход...

extension UIViewController {
    class func loadFromNib<T: UIViewController>() -> T {
         return T(nibName: String(describing: self), bundle: nil)
    }
}

let vc : OfferDetailViewController = OfferDetailViewController.loadFromNib()