2011-12-19 64 views
7

我在Interface Builder的一個視圖中有30個按鈕。每個人在100001和100030之間都有一個不同的標籤。我發現很容易對每個按鈕使用相同的動作,在按下時爲每個按鈕傳遞標籤,並使用代碼決定要裝入的級別。我可以使用不同標籤將多個對象連接到同一個IBOutlet嗎?

我想將所有按鈕連接到一個IBOutlet,但每個按鈕都會根據用戶保存的數據和按鈕的標籤加載不同的圖像。

我該怎麼做?

回答

23

使用IBOutletCollection的插座集合添加到您的視圖控制器,這樣的:

@property (retain, nonatomic) IBOutletCollection(UIButton) NSMutableSet* buttons; 

這將讓你所有的按鈕連接到一個出口。屬性buttons將是一個包含所有按鈕的NSMutableSet。您可以使用按鈕的tag屬性繼續識別單個按鈕。如果你想通過所有的按鈕迭代,也許是爲了建立每個按鈕的形象這是非常方便:

for (UIButton *b in self.buttons) { 
    b.imageView.image = [self imageForTag:b.tag]; 
} 

(您需要提供-imageForTag:方法對於給定的標籤提供正確的圖像,或者找當然,如果您已經知道所有按鈕的標籤值的範圍,並且您已經注意在包含所有按鈕的視圖中使標籤獨一無二的話,按鈕,您也可以使用-viewWithTag:單獨獲取每個按鈕。這可能不像已經創建的整組按鈕那樣快,就像你在上面描述的outlet集合中那樣,但這確實意味着還有一件事要維護。

+1

是的,當場!我剛剛嘗試過這一點,NSLog'ed了數組的數量,並完美地連接按鈕......唯一的這個我不知道該怎麼做,然後用它來改變這個按鈕圖像?我該怎麼做明智的代碼?謝謝! – 2011-12-19 16:55:22

+0

使用IBOutletCollection設置按鈕的圖像與使用普通的舊IBOutlet沒有什麼不同,只是首先必須從集合中獲取每個按鈕。我在上面添加了一個小片段,可能有所幫助。 – Caleb 2011-12-19 17:03:14

+1

謝謝你現在工作得很好! :d – 2011-12-19 17:11:24

0

按照以下步驟來創建出口數組的它與IB元素連接:

  • 創建IBOutlets數組
  • 在你的故事板視圖控制器接口
  • 選擇ViewController中添加多個UI元素(查看) (在故事板中)和開放連接檢查員
  • 在連接檢查器中有選項'出口集合'(您將在那裏看到一系列插座)
  • 如果連你的界面元素

-

class ViewController2: UIViewController { 


    @IBOutlet var collection:[UIView]! 


    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
} 

enter image description here

相關問題