【问题标题】:How to get UISwitch with its tag?如何获取带有标签的 UISwitch?
【发布时间】:2014-05-16 23:56:31
【问题描述】:

我有一个函数,每次我打开控制器为我绘制 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 标签以将其设置为 on 或 off 的正确答案,我该如何获取它?

【问题讨论】:

    标签: ios tags uiswitch


    【解决方案1】:

    视图的默认标签是 0。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-03-21
        • 1970-01-01
        • 2017-09-07
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 2020-04-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多