2017-05-30 40 views
1

我在viewController中遇到這個錯誤,不知道爲什麼會發生這種情況。控制器目前設置如下:屬性'self.menuViewController'在super.init調用時未初始化

class ContainerViewController: UIViewController { 

    init(sideMenu: UIViewController, center: UIViewController) { 
    menuViewController = sideMenu 
    centerViewController = center 
    super.init(nibName: nil, bundle: nil) 
    } 

    required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder)// This is where the error happens 
    } 

} 

任何線索爲什麼會發生這種情況?

+0

你能添加錯誤信息嗎? –

+0

錯誤是''屬性'self.menuViewController'未在super.init調用初始化'' – SwiftyJD

回答

2

錯誤發生在第二個初始化程序中,因爲該屬性未初始化。所有不是可選的並且沒有默認值的屬性都必須在每個初始化程序中單獨初始化,因爲只有特定的初始化程序實際運行(除非它顯式調用另一個初始化程序)。

如果您使用的是coder初始值設定項,則需要在其中爲其指定一個值或使其成爲可選項。如果你實際上沒有實現這個初始化器,那麼默認爲fatalError,因爲如果這個初始化器運行的話,意味着無論如何都會出現一些可怕的錯誤。

+0

我明白了,這是有道理的 – SwiftyJD

相關問題