【发布时间】:2020-01-16 13:23:26
【问题描述】:
我有一个 13 行的函数,它在我的应用程序中的每个 ViewController 中重复,整个项目总共有 690 行代码!
/// Adds Menu Button
func addMenuButton() {
let menuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
let menuImage = UIImage(named: "MenuWhite")
menuButton.setImage(menuImage, for: .normal)
menuButton.addTarget(self, action: #selector(menuTappedAction), for: .touchDown)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: menuButton)
}
/// Launches the MenuViewController
@objc func menuTappedAction() {
coordinator?.openMenu()
}
为了让 menuTappedAction 函数起作用,我必须像这样声明一个弱变量:
extension UIViewController {
weak var coordinator: MainCoordinator?
但是这样做我得到错误Extensions must not contain stored properties
到目前为止我尝试了什么:
1) 删除 weak 关键字将导致我的所有应用程序发生冲突。
2)这样声明:
weak var coordinator: MainCoordinator?
extension UIViewController {
将使错误静音,但协调器不会执行任何操作。有什么建议可以解决这个问题吗?
【问题讨论】:
-
如果您需要的是单个协调器实例,您可以创建一个单例共享实例。 stackoverflow.com/a/47481780/2303865
-
这个协调器是如何创建的?是每个人都一样,还是一组控制器独有?
标签: swift refactoring coordinator-pattern