问题描述
我的应用程序中有两个主屏幕,目前都只是UIViewController
的子类。这两个视图控制器非常相似-它们都实现了名为UIView
的我的自定义子类HeaderView
,该子类负责显示信息并接受用户输入。就目前而言,该代码是重复的,因为两个视图控制器的HeaderView
设置是相同的-唯一的区别是当用户确认HeaderView
中的文本输入时会发生什么。
为减少重复代码,我创建了一个名为InputViewController
(UIViewController
的子类)的类,该类容纳两个相同的视图控制器的各个方面。最终,我希望两个视图控制器都继承InputViewController
而不是UIViewController
的子类。
class InputViewController: UIViewController,InputProtocol {
private let headerView = HeaderView()
override func viewDidLoad() {
super.viewDidLoad()
// layout,etc.
setupCallbacks()
}
internal func setupCallbacks() {
headerView.onUpdate = { (text: String) in
// called when user confirms text entry in headerView
self.onHeaderUpdate()
}
}
internal func onHeaderUpdate() {} // Blank function
}
setupCallbacks()
和onHeaderUpdate()
是InputViewController
所遵循的协议中定义的方法。 HeaderView
实现由setupCallbacks()
headerView.onUpdate...
中处理的回调关闭
InputViewController
符合的协议:
protocol InputProtocol {
func setupCallbacks()
func onHeaderUpdate()
}
由于我希望InputViewController
的子类重写onHeaderUpdate()
方法,因此将onHeaderUpdate()
中InputViewController
的定义保留为空白是传统的做法还是存在另一种解决方案这个吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)