将UI元素连接到数组中的插槽

时间:2013-10-30 18:57:40

标签: ios iphone cocoa-touch

我从周一到周日有7个开关,需要将所有7个开关连接到我的控制器。将它们分开连接感觉真的很尴尬:

@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],依此类推?

3 个答案:

答案 0 :(得分:2)

右键单击IB中的单个开关,然后从“New Referencing Outlet Collection”拖动到.h文件以创建新的插座集合。你应该看到一个属性

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

创建。重复拖动每个其他开关到该属性。

答案 1 :(得分: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]];
}

答案 2 :(得分:0)

你可以做这样的事情

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