【问题标题】:How to detect whether UISwitch is on/off?如何检测 UISwitch 是否打开/关闭?
【发布时间】:2011-09-04 00:52:24
【问题描述】:

我正在尝试检测 UISwitch 何时打开/关闭

// .h
IBOutlet UISwitch *privateSwitch;
@property (nonatomic, retain) IBOutlet UISwitch *privateSwitch;

//.m
@synthesize privateSwitch;
privateSwitch = [[UISwitch alloc] init];
howToDisplay = @"no";

// In my cellForRowsAtIndexPath
UISwitch *privateSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(199, 8, 0, 0)];
[privateSwitch addTarget:self action:@selector(switchToggled:) forControlEvents: UIControlEventTouchUpInside];
[cell.contentView addSubview:privateSwitch];

if ([howToDisplay isEqualToString:@"no"]) {
    [privateSwitch setOn:NO animated:NO];
} else {
    [privateSwitch setOn:YES animated:NO];
}

- (void) switchToggled:(id)sender {

if ([privateSwitch isOn]) {
NSLog(@"its on!");
howToDisplay = @"yes";
[formDataTwo removeAllObjects];
[formTableView reloadData];
[privateSwitch setOn:YES animated:YES];
} else {
NSLog(@"its off!");
howToDisplay = @"no";
[formDataTwo removeAllObjects];
[formDataTwo addObject:@"Facebook"];
[formDataTwo addObject:@"Twitter"];
[formDataTwo addObject:@"Flickr"];
[formDataTwo addObject:@"Tumblr"];
[formDataTwo addObject:@"Email"];
[formDataTwo addObject:@"MMS"];

[formTableView reloadData];
[privateSwitch setOn:NO animated:YES];
}

}

但是,当我打开它时,它会说它已关闭。什么给了?

谢谢。

【问题讨论】:

    标签: objective-c uiswitch


    【解决方案1】:

    在您的 cellForRowsAtIndexPath 方法中,您声明了一个局部变量 UISwitch *privateSwitch,它隐藏了您的实例变量 privateSwitch

    在您的switchToggled: 操作中,您使用实例变量来测试开关的状态,而不是cellForRowAtIndexPath 中声明的状态。您可以像这样使用sender 参数:

    - (void) switchToggled:(id)sender {
        UISwitch *mySwitch = (UISwitch *)sender;
        if ([mySwitch isOn]) {
            NSLog(@"its on!");
        } else {
            NSLog(@"its off!");
        }
    }
    

    P.S:我会使用UIControlEventValueChanged 而不是UIControlEventTouchUpInside

    【讨论】:

    • 谢谢。愚蠢的错误!删除了UISwitch *,它就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    相关资源
    最近更新 更多