我正在努力为我遇到的经常出现的问题找到最佳解决方案,每次都有不同的解决方法。
想象一下,我有几个步骤的表格(比如2开始)
我的代码结构是:
class SuperStepViewController: UIViewController {
//Some generic Stuff
func continueAction(sender : AnyObject?) {
//NOTHING
}
}
class Step1ViewController: SuperStepViewController {
override func continueAction(sender : AnyObject?) {
//DO SOME USEFULL STUFF
}
}
class Step2ViewController: SuperStepViewController {
override func continueAction(sender : AnyObject?) {
//DO SOME USEFULL STUFF
}
}
我想要的是更改此代码,而不是在continueAction
中实现SuperViewController
函数,因为它没有默认实现。
初看起来,我认为protocol
是个好主意。如果我将continueAction
放入所需的协议中,我将遇到编译时错误,这就是我想要的。
protocol StepProtocol {
func continueAction()
}
class SuperStepViewController: UIViewController {
//GENERIC
}
class Step1ViewController: SuperStepViewController, StepProtocol {
func continueAction(sender : AnyObject?) {
//DO SOME USEFULL STUFF
}
}
class Step2ViewController: SuperStepViewController, StepProtocol {
func continueAction(sender : AnyObject?) {
//DO SOME USEFULL STUFF
}
}
但这还不够,我想在我对superview控制器进行子类化时立即生成这个编译。我知道Java就像抽象类一样。
class Step3ViewController: SuperStepViewController {
//NO continueAction implementation => No compilation error
}
有没有人有想法?
答案 0 :(得分:0)
没有。这在Swift中是不可能的。斯威夫特不支持这种活动。