2011-05-26 111 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

相關問題