【问题标题】:Best way to code this...(simple code, many buttons)最好的编码方式......(简单的代码,许多按钮)
【发布时间】:2011-05-26 20:33:31
【问题描述】:

我有一个用户购买产品的系统。他们有许多不同的产品,相当于 ipad 屏幕上的大约 80 个按钮。这是基本的,他们只是在按钮上有产品名称。

我开始为一个按钮编码

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

这个应用程序需要做的就是生成一个包含名称和价格的文本文件,然后将价格添加到总数中。我可以做到这一点,但我不喜欢有 80 个 ibactions。那么我可以在最短的时间内而不是使用 80 个单独的 IBaction 来做到这一点的最佳方法是什么?

谢谢!

【问题讨论】:

  • 我不想添加这个作为答案,因为我需要更少的时间来进一步描述它。这是我将使用 UITableView 的情况。看看它。 ;-)

标签: iphone coding-style system


【解决方案1】:

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

-(IBAction)buttonPress:(id)sender { UIButton *b = (UIButton *)sender; int 标记 = b.tag; // 使用标签知道哪个按钮被按下 ... }

所以你按下按钮的逻辑是在一种方法中,并且按钮本身有一个唯一标识它的标签。

【讨论】:

  • 非常感谢您的快速回复,我现在会尽快尝试类似的方法。
  • 非常感谢!我刚试了一下,效果很好! .我不知道您可以通过 IBAction(使用发件人)检索按钮标签,这对我很有帮助!谢谢!
【解决方案2】:

考虑创建 UIButton 子类并将产品按钮“附加”到按钮本身内部 - 这样您就可以对所有按钮进行 1 个操作,并在操作处理程序中从发送操作的按钮中购买产品。

您将拥有类似于以下内容的界面:

@interface MyProductButton : UIButton{
   Product *product;
}

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

【讨论】:

  • 感谢您的回复,我将快速尝试这里列出的几种方法,看看哪种方法效果最好!我会在这里发布我的结果。
【解决方案3】:

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

【讨论】:

  • 感谢您的回复,我花了很长时间在界面生成器中使它看起来不错,所以现在不想全部更改。感谢您的建议。
  • Interface Builder 不是全有或全无的选择。您可以执行除 IB 中的按钮之外的所有操作,然后在视图控制器的 -viewDidLoad 方法中添加带有代码的按钮。
猜你喜欢
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 2023-03-04
  • 2010-12-08
相关资源
最近更新 更多