2015-06-17 61 views
10

我是Swift新手。我繼承了一個項目。我看到它在設備上運行。但是,當我檢查代碼時,它有很多錯誤。我能夠清除錯誤。但是,我遇到了這個讓我感到困惑的問題。該項目也使用xib文件。這是代碼。Swift,super.init()必須調用超類'UIView'錯誤的指定初始值設定項

required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
    } 

    init(items:NSArray, viewController:AnyObject){ 
     super.init() 
     //itemsArray = items 
     itemsArray = items as [AnyObject] 
     //commonInit(viewController as UIViewController) 
     commonInit(viewController as! UIViewController) 
    } 

我得到了init(items:NSArray,viewController:AnyObject)方法/函數下的錯誤。錯誤指向「super.init()」。它聲明「必須調用超類'UIView'的錯誤」

我一直在搜索,谷歌搜索,詢問其他人和沒有出現。 我能否在修復此錯誤方面獲得幫助,或至少爲何會出現此錯誤?我想明白,所以我可以成爲一個更好的軟件開發人員。

編輯:我想感謝大家的見解和幫助。我發現問題更大。我做了super.init中建議的更改(frame:CGRect)。我不得不改變一個數組屬性,這也影響了init函數。

+3

嘗試更改self.init()中的super.init() – Andrea

+0

@Andrea謝謝我的傢伙 –

回答

3

由於錯誤消息建議您只能調用超類的指定初始值設定項。

爲了解決這個問題,你需要撥打:super.init(frame: frame)代替super.init()

8

UIView指定的初始值是「S:

init(frame: CGRect) 
init(coder aDecoder: NSCoder) 

你打電話super.init()這是自其超NSObject繼承的初始化。按照編譯器的建議,使用其中一個初始值。

+15

這個答案並沒有提供比錯誤消息更多的信息。 – shieldstroy

+0

同意@shieldstroy – Confused

相關問題