ios - 我应该为弹出菜单使用单独的 UIViewController 吗?
问题描述
一个相当理论或抽象的问题......
我有一个带有视图的视图控制器(我们称之为 viewControllerA)(显然)。在显示视图时,如果用户按下特定按钮,将出现一个弹出菜单(想想按钮网格)。用户可以按下弹出菜单中的按钮来转换到另一个视图(由另一个视图控制器控制)。
我应该有一个单独的视图控制器来处理/管理弹出菜单还是应该“简单地”将弹出菜单实现为由同一视图控制器(即 viewControllerA)控制的视图?
非常感谢支持和反对每种方法的原因。
解决方案
我应该有一个单独的视图控制器来处理/管理弹出菜单吗?
我相信,这是更好的选择。您可以在情节提要上创建一个容器视图,该视图将具有一个更易于使用的单独控制器,然后是具有不同视图的巨大文件。
您将获得什么:
- 具有单一职责的结构良好的文件
- 更容易测试和调整这两个元素
我应该“简单地”将弹出菜单实现为由同一视图控制器控制的视图吗?
在我看来,这种方法没有任何优势。在这种情况下,您将:
- 违反单一责任原则。
- “简单” - 意味着您将拥有 2 个不同的视图,它们的生命周期在一个控制器中管理(只是变得更难)
- 最有可能的是 Massive View Controller
如果你不使用任何特定的架构模式,也许你应该看看这里。
推荐阅读
- ruby-on-rails - 如何在 Shopify 公共应用中添加 JavaScript
- c# - 从 UWP 应用使用 VLC-WinRT 流式传输 RTP
- arrays - Angular 7双向绑定:将数组作为参数的管道无法按预期工作
- c - 我的代码没有正确地从每个单独的单词中反转字符串?
- python - 如何使用 sys.stdout 返回任何对象
- jquery - 在列中搜索值,然后在匹配结果后过滤表
- c# - 无法在存储库构造函数 asp.net core 中创建服务范围
- powershell - 将空文件夹压缩为文件夹,而不是文件
- gcc - 如何在 Cortex-M 上的“noreturn”函数中重置堆栈指针?
- javascript - 如何在 vscode 扩展中使用正则表达式保留返回战车?