2013-10-30 56 views
1

我從週一到週日有7個開關,並且需要將所有7個開關連接到我的控制器。它感覺很彆扭將它們分別連接:相反將UI元素連接到陣列中的插槽

@property (strong, nonatomic)IBOutlet UISwitch *switch1; 
@property (strong, nonatomic)IBOutlet UISwitch *switch2; 
@property (strong, nonatomic)IBOutlet UISwitch *switch3; 
... 
@property (strong, nonatomic)IBOutlet UISwitch *switch7; 
// It gets worse when you have even more switches 

,是有可能有一個NSArray *switchArr保持7個開關,和我們開關1連接到switchArr [1],開關2,switchArr [2],和等等?

回答

2

右鍵單擊IB中的單個開關,然後從「New Referencing Outlet Collection」拖動到.h文件以創建新的插座集合。你應該看到一個屬性

@property (strong, nonatomic) IBOutletCollection(UISwitch) NSArray *switches; 

創建。重複將每個其他開關拖動到該屬性。

+0

是否保存順序?例如,如果我按照'1,2,3,4'的順序連接,它是否必須使'1'連接到數組中的插槽'0'? – OneZero

+0

不是100%確定,但您可以隨時爲每臺交換機使用一個標籤。 –

+0

你是什麼意思爲每個交換機使用標籤? – OneZero

0

那麼你可以做這樣的事情

@property (strong, nonatomic)IBOutletCollection(UISwitch) NSArray * switches; 
1

設置標籤在你想要的開關是陣列內,你就可以開始從10標記,以避免與其他意見衝突的順序每個開關和然後在viewDidLoad中,您可以將視圖存儲到可變數組中,如下所示:

NSMutableArray *switches = [[NSMutableArray alloc] init]; 
NSInteger initialTag = 10; //set your initial tag 
for(NSInteger i = initialTag; i < initialTag + 7; i++) { 
    [switches addObject:[self.view viewWithTag:i]]; 
}