我有一个供用户购买产品的系统。它们有许多不同的产品,它相当于ipad屏幕上的大约80个按钮。它是基本的,它们只是在按钮上有产品名称。
我开始编写一个按钮
NSString *PriceString = TextView.text;
NSString *Final = [PriceString stringByAppendingString:@"\n Clothes Item 1 £20.00"];
TextView.text = Final;
TotalPrice += 20;
这个应用程序需要做的就是生成一个包含名称和价格的文本文件,然后将价格添加到总计中。我可以做到这一点,但我不喜欢有80个ibactions。那么,我能在最短的时间内完成这项工作的最佳方式是什么?而不是80个独立的IBTION?
谢谢!
答案 0 :(得分:2)
创建一个IBAction
方法,用于检查tag
(按钮)的sender
属性。将方法指定为每个按钮的操作(例如,触地)。给每个按钮一个唯一的标签,比如说按钮标签/价格来自的数组索引(例如)。
-(IBAction)buttonPress:(id)sender { UIButton *b = (UIButton *)sender; int tag = b.tag; // Use tag to know which button was pressed ... }
因此,按下按钮的逻辑在一个方法中,按钮本身有一个唯一标识它的标记。
答案 1 :(得分:0)
考虑创建UIButton子类并将产品按钮“附加”到内部按钮本身 - 这样您就可以对所有按钮执行1个操作,并且在操作处理程序中从发送操作的按钮获取产品。
您的界面类似于:
@interface MyProductButton : UIButton{
Product *product;
}
@property (nonatomic, retain) Product *product;
- (id)initWithFrame:(CGRect)frame product:(Product*)product;
...
@end
答案 2 :(得分:0)
您需要在代码中创建按钮,而不是使用Interface Builder。而不是为每个按钮设置方法,将数据附加到按钮,然后对每个按钮使用单个操作方法。您可以子类化UIButton并添加数据属性,或者如果您需要存储的只是一个整数(例如,数组索引),则使用UIView的内置标记属性。