2011-05-26 35 views
0

我有一个系统供用户购买产品。他们有很多不同的产品,它相当于一个ipad屏幕上的约80个按钮。这是基本的,他们只是在按钮上有产品名称。最好的方式来编码...(简单的代码,很多按钮)

我开始编码为一个按钮

NSString *PriceString = TextView.text; 
NSString *Final = [PriceString stringByAppendingString:@"\n Clothes Item 1 £20.00"]; 
TextView.text = Final; 
TotalPrice += 20; 

这个应用程式需要做的是产生的名称和价格的文本文件,然后将价格加总。我可以做到这一点,但我不喜欢有80个ibactions。那么我能在最短的时间内做到这一点的最佳方式是什么,而不是80个单独的IB行动?

谢谢!

+0

我不想加这个作为答案,因为我不得不用更少的时间来进一步描述它。这是我会使用UITableView的情况。看看它。 ;-) – 2011-05-26 20:40:42

回答

2

创建检查tag属性sender(按钮)的一个IBAction方法。将该方法分配为每个按钮的操作(例如,点击)。给每个按钮一个唯一的标签,比如说按钮标签/价格来自哪个数组的索引(例如)。

 
-(IBAction)buttonPress:(id)sender 
{ 
    UIButton *b = (UIButton *)sender; 
    int tag = b.tag; 
    // Use tag to know which button was pressed 
    ... 
} 

因此,您按下按钮的逻辑是在一种方法中,而按钮本身具有唯一标识它的标签。

+0

非常感谢您的快速回复,我会尽快尝试类似的东西。 – ApiMail 2011-05-26 20:45:06

+0

非常感谢!我只是试了一下,它效果很好! 。我不知道你可以通过IBAction(使用发件人)检索按钮标签,这真的帮助了我!谢谢! – ApiMail 2011-05-26 20:59:23

0

考虑创建UIButton子类并将产品按钮“附加”存储到按钮内部 - 这样,您可以对所有按钮执行1个操作,并在动作处理程序中从发送操作的按钮获取产品。

您将有类似的界面:

@interface MyProductButton : UIButton{ 
    Product *product; 
} 

@property (nonatomic, retain) Product *product; 
- (id)initWithFrame:(CGRect)frame product:(Product*)product; 
... 
@end 
+0

感谢您的回复,我将尽快尝试列出的几种方法,看看哪些方法效果最好!我在这里发表我的结果。 – ApiMail 2011-05-26 20:45:50

0

您需要在代码中创建按钮而不是使用Interface Builder。而不是每个按钮有一个方法,将数据附加到按钮,然后使用每个按钮的单一操作方法。如果你需要存储的只是一个整数(比如数组索引),你可以继承UIButton并添加一个数据属性,或者使用UIView的内置标记属性。

+0

感谢您的回复,我花了很长一段时间使它在界面构建器中看起来不错,所以现在不想真正改变它。感谢您的建议。 – ApiMail 2011-05-26 20:46:54

+0

界面生成器不是一个全部或全部的选择。除IB中的按钮之外,您可以执行所有操作,然后在视图控制器的'-viewDidLoad'方法中添加代码按钮。 – 2011-05-26 20:49:43

相关问题