更改UISwitch值而不触发事件

时间:2011-09-12 20:01:22

标签: objective-c ios controls uiswitch

我正在尝试根据您是否启用了位置服务来更改UISwitch的值。我正在使用ViewDidLoad方法设置目标事件,但由于您可以关闭应用从后台加载它,我正在更改UISwitchViewDidAppear的值}:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.cell2Switch addTarget:self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged];

    ...

}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if(![AppDelegate sharedAppDelegate].locationServicesEnabled && self.cell2Switch.on)
    {
        self.cell2Switch.userInteractionEnabled = NO;
        [self.cell2Switch setOn:NO];
    }
}

当我更改值时,它会触发我在ViewDidLoad中分配的目标事件。

有没有办法可以在不自动触发事件的情况下更改UISwitch的值?

1 个答案:

答案 0 :(得分:2)

您需要删除目标事件。

如果UISwitch没有任何用途,只是为了向您显示已启用或禁用某些内容,则您不需要目标事件。