假设iOS应用程序显示一个元素,当单击该元素时,会调用该元素的操作菜单(例如,例如UIActionSheet)。问题是,许多可点击元素,例如这个可能存在于应用程序的每个视图中,因此操作菜单及其代理也必须在任何情况下处理。
例如,可点击元素可能是某些产品的照片(带有图像背景的UIButton),可能会出现在许多不同的屏幕中,点击后会向用户显示“购买”,“查看详情”等选项等等。
您将如何以模块化和可重复使用的方式设计/实现具有相关行为的此类组件?
将该功能保存在一组独立的类中非常重要,这些类可以在需要时单独测试并打开/关闭,也不需要为每个可能使用该功能的控制器插入代码。
谢谢!
答案 0 :(得分:1)
如果你正在实现一个可以出现在多个视图中的应用程序范围的UI元素,我会继承你的UIViewController(即ABCViewController)。我通常在每个项目的开头都这样做,以防万一我需要在应用程序范围内实现某些内容,并且我的所有视图都是该视图控制器的子类,除了头文件中的一个单词之外没有任何代码更改。然后在ABCViewController中实现一个函数来显示菜单和一个消除它的函数。与Singleton类相比,我发现内存管理对象和回调到ViewController更容易,而无需处理委托。
答案 1 :(得分: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];