Swift 如何创建类似viewDidLoad的覆盖函数?
我只是想知道如何创建一个类似于func的viewDidLoad,当我创建UIViewController的子类时,它总是存在。所以我创建了一个类名SnapKitView。然后,我想要实现的是,每次我创建一个属于SnapKitView子类的类时,我的Swift 如何创建类似viewDidLoad的覆盖函数?,swift,Swift,我只是想知道如何创建一个类似于func的viewDidLoad,当我创建UIViewController的子类时,它总是存在。所以我创建了一个类名SnapKitView。然后,我想要实现的是,每次我创建一个属于SnapKitView子类的类时,我的override awakeFromCodefunc总是存在 例如: 我想要实现的是,每当我将SnapKitView子类化时,override awakeFromCode已经像override viewDidLoad一样预先填充。可能吗 在父类中,在本
override awakeFromCode
func总是存在
例如:
我想要实现的是,每当我将SnapKitView子类化时,
override awakeFromCode
已经像override viewDidLoad
一样预先填充。可能吗 在父类中,在本例中为SnapKitView
,通常按如下方式定义函数
func awakeFromCode() {
// Put any functionality here that applies to ALL subclasses
}
然后在每个子类(如AuthView
)中,使用相同的函数签名(相同的名称和参数,如果有)重写函数
super.awakeFromCode()
将调用该函数的父函数实现,您可以将其放在添加的子类功能之前、之后或中间,具体取决于您希望它执行的顺序
编辑:另外,如果您的一个子类不需要添加任何超出父函数功能范围的功能,您可以在子类中调用父函数,通常类似于awakeFromCode()
,而不引用super
。如果您重写它并且只想调用父函数而不想调用子类的函数,那么只需要引用super
您可能对
required
函数继承感兴趣,您可以在此处阅读更多相关内容:为了澄清,是否要在每个子类中重新定义awakeFromCode
,还是希望每个子类调用父类中定义的awakeFromCode
?@WillB我希望每个子类中都有awakeFromCode。使用awakeFromCode()创建一个protocol
相反。那么您想要一种在创建文件时自动创建某些方法的模板吗?我想要实现的是,每次我将SnapKitView子类化时,override awakeFromCode
已经像override viewDidLoad
一样预先填充。这可能吗?@AlvinJohn不可能,不可能。当Xcode自动生成override viewdiload
函数时,它只是使函数的外壳具有一个空的主体。除非您向该shell中添加了一些内容,否则它不会执行任何操作,因为它只调用父级的viewDidLoad
,然后就完成了。@AlvinJohn我还应该提到必需的
继承,这可能更接近您想要的继承。阅读这里:有没有一种方法可以告诉xcode在SnapKitView
是子类时自动生成覆盖“func awakeFromCode”shell?@AlvinJohn我从未尝试过,但根据这一点,您可以:
func awakeFromCode() {
// Put any functionality here that applies to ALL subclasses
}
override awakeFromCode() {
// This will call the original parent function and execute anything in its function body
super.awakeFromCode()
// Then do anything you want this subclass in particular to do here
}