如何在初始化时发送参数UIView
以前曾询问过它,但没有一致的简单答案。如何在初始化时发送参数UIView
通常你:
override init (frame : CGRect)
{
super.init(frame : frame)
我需要做(我不能因为没有这样的功能覆盖):
override init (frame : CGRect, number:Int)
{
super.init(frame : frame)
这显然给了一些错误。 有没有办法像一样通过创建实例并仍然传递参数?
为了完成你必须写
class MyView : UIView {
var number : Int
override convenience init(frame: CGRect)
{
self.init(frame:frame, number: 0)
}
init(frame: CGRect, number: Int)
{
self.number = number
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
number = 0
super.init(coder : aDecoder)
}
}
可能更容易初始化所有规则和要求查看通常/指定的方式并将该属性设置为额外的行。
有一个为你指定的任何覆盖方法,只是把它写这样
init(frame : CGRect, number: Int) {
super.init(frame : frame)
}
而不是原来的重写?你像往常一样初始化它? – Curnelious
如果按照我在这里描述的方式进行操作,您将创建一个自定义初始化程序,但您需要在自定义初始化程序中调用'super.init(frame:)',以便您可以传递该帧你的自定义初始化为超级。 –
这就是我已经知道:)我正在寻找一种方法来做到这一点,当我像往常一样启动班级。我弄错你了吗? – Curnelious
阅读错误消息:你*不重写任何方法从它的超类*,这意味着在超类没有初始化'init(frame:number:)'。把'override'替换为'convenience'。 – vadian
这将产生更多的错误,你可以发布请直接回答? – Curnelious