-1

我正在尝试使用该方法动态更改 UISwitch[self.mySwitch setOn:YES animated:YES];

代码中的状态也发生了变化,因此机制工作正常,但在视图中状态没有改变。所以我得到一个 UISwitch 显示为 OFF 并像 ON 一样工作。

当我点击它时,开关变为ON。所以我必须点击它两次才能启动代码的 inCaseOff 部分。

我希望这足够清楚。

[编辑]

这是你问的代码

- (void)viewDidLoad
{
   [self manageTheSwitch];
}

- (void) manageTheSwitch{
    self.mySwitch = [[UISwitch alloc]init];
    if(randomObject != nil){
        [self.mySwitch setOn:YES animated:YES];
    }else{
        [self.mySwitch setOn:NO animated:YES];
    }
}
4

3 回答 3

3

您正在以编程方式将不同的 UISwitch 设置为视图中显示的那个。您根本不必这样做[[UISwitch alloc]init],而是应该通过IBOutlet控制器中的属性检索它(连接到您在 IB 中的视图)。

假设您确实连接了 mySwitch,那么您需要做的就是删除此行:

self.mySwitch = [[UISwitch alloc]init];
于 2012-11-06T16:53:51.383 回答
2

您的问题是,您在 manageTheSwitch 方法中实例化了一个新按钮,而不是访问您在情节提要中创建的按钮。只需消除该 alloc init 即可。

于 2012-11-06T16:54:48.117 回答
0

尝试使用从 UIControl 继承的“选定”属性 UISwitch: self.mySwitch.selected = YES;

于 2012-11-06T16:54:27.557 回答