这个问题适用于 OSX 应用程序,但同样的原则也适用于 iOS。
我在情节提要上有一个 NSWindowController 具有以下设置。
A. MainWindowController 有子视图:
1) 带有按钮的工具栏
2) 一个SubVcA
拥有自己内容的viewController
B. SubVcA
有SubVcB
viewController 的视图作为它的内容
C. SubVcB
有功能ButtonPressed
目标是SubVcB
通过单击工具栏按钮来触发 viewController 中的按钮按下功能。
我一直在这样做的方法是从 mainWindowController 到目标 viewController 的方法实现链,如下所示:
MainWindowController call method on SubVcA
-->SubVcA call method on SubVcB
---> SubVcB call method buttonPressed
这很有效,但是当控制器堆栈达到大约 4 级时它会变得混乱。当 SubVC(B) 必须将数据发送回 MainWindowController 时,它也会变得更加混乱,因为为了进行封装(如不让 SubVC(B) 拥有太多关于其调用 viewControllers 的信息),我必须在链上实现委托方法。当您有多个工具栏按钮时,它会变得更加混乱。
现在......我刚刚开始搞乱情节提要上的 firstResponder 项目
而且我意识到它会弹出一个巨大的列表,其中包含在整个应用程序中实现的所有方法-(IBAction)
。
所以我现在的问题是:为了减少视图层次结构上下的方法混乱,使用 firstResponder 将 MainWindowController 的工具栏按钮操作直接连接到 SubVc(B) viewController 中的 buttonPressed 方法是否是一个好的应用程序设计故事板上的对象?
此外,还有其他设计模式可以减少混乱吗?