[英]Load UIViewController from the separate nib file in swift?
我帶了一個帶有單獨nib文件的ViewController。 我的初始根視圖控制器在storyBoard中設置。 現在問題是當我推送到這個控制器時,沒有調用View hireachy方法(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);
問題 :使用storyboard View層次結構方法是調用但不是使用單獨的nib文件?
var viewController = OfferDetailViewController(nibName: "OfferDetailViewController", bundle: nil)
這是一個很好的通用方法......
extension UIViewController {
class func loadFromNib<T: UIViewController>() -> T {
return T(nibName: String(describing: self), bundle: nil)
}
}
let vc : OfferDetailViewController = OfferDetailViewController.loadFromNib()
類型鑄造的解決方案:
extension UIViewController {
static func initFromNib() -> Self {
func instanceFromNib<T: UIViewController>() -> T {
return T(nibName: String(describing: self), bundle: nil)
}
return instanceFromNib()
}
}
享受:
let testVC = TestVC.initFromNib()
testVC.someCustomParam = "someValue"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.