objective-c - iOS - 如何设计一个出现在所有 View 中的组件?

标签 objective-c ios design-patterns cocoa-design-patterns

假设 iOS 应用程序显示一个元素,单击该元素会调用该元素的操作菜单(例如 UIActionSheet)。问题是,许多可点击元素(例如这个元素)可能出现在应用程序的每个 View 中,因此在任何情况下都必须处理操作菜单及其委托(delegate)。

例如,可点击元素可能是某些产品的照片(带有图像背景的 UIButton),它可能出现在许多不同的屏幕中,当点击时,用户会看到诸如“购买”、“查看详情”等选项, 等等。

您将如何以模块化和可重用的方式设计/实现这种具有相关行为的组件?

重要的是将该功能保留在一组独立的类中,这些类可以轻松地单独测试并在需要时打开/关闭,并且不需要向可能使用该功能的每个 Controller 插入代码。

谢谢!

最佳答案

如果您要实现一个可以出现在多个 View 中的应用范围的 UI 元素,我会将您的 UIViewController(即 ABCViewController)子类化。我通常在每个项目开始时都这样做,以防万一我需要在整个应用程序范围内实现某些东西,并且我的所有 View 都是该 View Controller 的子类,除了头文件中的一个词之外没有任何代码更改。然后在您的 ABCViewController 中实现一个用于显示菜单的函数和一个将其关闭的函数。与 Singleton 类相比,我发现内存管理对象和回调到 ViewController 更容易,而无需处理委托(delegate)。

关于objective-c - iOS - 如何设计一个出现在所有 View 中的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13034686/

相关文章:

ios - NSDateFormatter 在 iOS 9.1 上的意外行为

ios - 选择时导航栏中的 UIBarButtonItem 会突出显示,但工具栏中的 UIBarButtonItem 不会

c# - 在存储库模式中,我应该使用数据库模型作为我的 View 模型还是应该为此创建单独的 ViewModel?

java - 使用 arraylists 得到错误的输出

Java SWT 设计模式

objective-c - NSOutlineView 子类中内容更改时的通知

iOS 8 TableView Controller 性能问题

iphone - UIViewController 似乎没有完全随 ARC 一起发布

ios - react-native-video onLoad onProgress 不工作 IOS

iOS: append 到文件