子类中是否有符合自定义协议的常规空白函数?

问题描述

我的应用程序中有两个主屏幕,目前都只是UIViewController的子类。这两个视图控制器非常相似-它们都实现了名为UIView的我的自定义子类HeaderView,该子类负责显示信息并接受用户输入。就目前而言,该代码是重复的,因为两个视图控制器的HeaderView设置是相同的-唯一的区别是当用户确认HeaderView中的文本输入时会发生什么。

为减少重复代码,我创建了一个名为InputViewControllerUIViewController的子类)的类,该类容纳两个相同的视图控制器的各个方面。最终,我希望两个视图控制器都继承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()
}

为了说明这一点,我绘制了一个图表。

diagram

由于我希望InputViewController的子类重写onHeaderUpdate()方法,因此将onHeaderUpdate()InputViewController的定义保留为空白是传统的做法还是存在另一种解决方案这个吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)