ios*_*eak 17 objective-c uiswitch
我试图检测UIS开关何时打开/关闭
// .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];
}
Run Code Online (Sandbox Code Playgroud)
}
但是,当我打开它时,它会说它已关闭.是什么赋予了?
谢谢.
alb*_*amg 54
在您的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!");
}
}
Run Code Online (Sandbox Code Playgroud)
PS:我会用UIControlEventValueChanged而不是UIControlEventTouchUpInside.
| 归档时间: |
|
| 查看次数: |
35770 次 |
| 最近记录: |