Swift,super.init()必须调用超类的指定初始化程序' UIView'错误

时间:2015-06-17 09:20:09

标签: ios iphone swift

我是Swift的新手。我继承了一个项目。我看到它在设备上运行。但是,当我签出代码时,它有很多错误。我能够清除错误。但是,我遇到了令我困惑的这一个。该项目也使用xib文件。这是代码。

    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函数的数组属性。

2 个答案:

答案 0 :(得分:11)

正如错误消息所示,您只能调用超类的指定初始值设定项。

要解决此问题,您需要致电:super.init(frame: frame)而不是super.init()

答案 1 :(得分:5)

UIView指定的初始值设定项为:

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

您正在调用super.init(),这是从其超类NSObject继承的初始值设定项。正如编译器建议的那样,使用其中一个初始化程序。