2015-06-17 47 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

相关问题