我试图了解如何从另一个类调用例如let creation = menuButtonController(image:#imageLiteral(resourceName: "maps"))
,然后在menuButtonController
我设置了这个:
class menuButtonController: UIView {
let buttonView = UIView()
let button = UIButton(type: .custom)
var imageButton: UIImageView
init(frame: CGRect, image: UIImage) {
super.init(frame: frame,image: image) //Cannot invoke UIView.init with an argument list of type (frame cgrect, image uiimage)
self.imageButton.image = image
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
/* other functions */
}
它给了我一个我无法解决的错误。任何人都可以帮助我吗?
现在,如果我只想使用(image: UIImage)
调用初始值设定项,那么我应该使用这样的convenience init
吗?
convenience init(image: UIImage) {
self.init(image: image)
self.imageButton.image = image
}
它不会给我错误,但在我尝试运行应用程序时会崩溃
答案 0 :(得分:1)
超类init(frame: CGRect, image: UIImage)
中没有方法UIView
。您需要先初始化imageButton
并调用指定的初始值设定项init(frame
:
init(frame: CGRect, image: UIImage) {
self.imageButton.image = image
super.init(frame: frame)
}
顺便说一句:类名应该以大写字母开头。