如何获得带有标签的UISwitch?

时间:2014-05-16 23:56:32

标签: ios tags uiswitch

我有一个功能,每当我打开控制器为我画UISwitch时我都会打电话。

 int y = 0;
    for (int i = 0 ; i < daysArray.count ; i++)
    {

        UISwitch * daysSwitch = [[UISwitch alloc]initWithFrame:CGRectMake(255, y, 20, 20)];
        [daysSwitch setTag:i];
        [daysSwitch setOn:YES];
         [daysSwitch addTarget:self action:@selector(switchPressed:) forControlEvents:UIControlEventValueChanged];
              [self.availableTimesScrollView addSubview:daysSwitch];

        y = y+ 130;


    }

我正在尝试根据标签将其中一些UISwitch设置为On或Off。

 UISwitch * switch = (UISwitch *) [self.view viewWithTag:0]
[switch setOn:NO];

但它并没有改变或似乎影响它。

因此,如果这不是让UISwitch的标签设置为开启或关闭的正确答案,我怎样才能得到它?

2 个答案:

答案 0 :(得分:1)

您正在将切换添加到self.availableTimesScrollView,因此在检索时您必须引用该滚动视图:

UISwitch * switch = (UISwitch *) [self.availableTimesScrollView viewWithTag:0]

答案 1 :(得分:1)

视图的默认标记为0.

您已将这些UISwitch个实例添加到self.availableTimesScrollView,但在viewWithTag:上调用了self.view。此方法将返回具有该给定标记的最近祖先,因此它可能返回self.availableTimesScrollView

假设您的视图层次结构如下所示,标记为0的最近祖先是self.availableTimesScrollView

self.view
    self.availableTimesScrollView (tag 0)
         switch1 (tag 0)
         switch2 (tag 1)
         switch3 (tag 2)
         ...