4

假设 iOS 应用程序显示一个元素,当单击该元素时,该元素会调用该元素的操作菜单(例如 UIActionSheet)。需要注意的是,许多可点击元素(例如这个元素)可能出现在应用程序的每个视图中,因此在任何情况下也必须处理操作菜单及其代表。

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

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

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

谢谢!

4

2 回答 2

1

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

于 2012-10-23T19:16:45.983 回答
0

创建一个代表您想要的功能的单例类怎么样?然后,您每次都可以调用单例对象。

@interface MyClickableButtonWithImage : NSObject {
    UIButton *aButton;
}
+(MyClickableButtonWithImage)getInstance;
-(IBAction)buttonClicked:(id)sender;
@property (nonatomic, strong) IBOutlet UIButton *aButton;

@end

// In your .m files, this will get the singleton object
MyClickableButtonWithImage *myCBWI = [MyClickableButtonWithImage getInstance];
于 2012-10-23T16:17:12.777 回答