1

我从周一到周日有 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],等等?

4

3 回答 3

2

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

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

创建的。重复将每隔一个开关拖动到该属性。

于 2013-10-30T19:08:40.460 回答
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]];
}
于 2013-10-30T19:58:30.140 回答
0

那么你可以做这样的事情

@property (strong, nonatomic)IBOutletCollection(UISwitch) NSArray * switches;
于 2013-10-30T19:14:30.927 回答