2011-05-28 21 views
16

Ben algılamaya çalışıyorum zaman UISwitch o açık/kapalıUISwitch'in açık/kapalı olup olmadığı nasıl belirlenir?

// .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]; 
} 

} Ancak

, onu açtığınızda, o kapalı diyecekler. Ne verir?

Teşekkürler.

cevap

52

Sizin cellForRowsAtIndexPath yönteminizde, privateSwitch örnek değişkeninizi gizleyen yerel bir değişken UISwitch *privateSwitch bildiriyorsunuz.

switchToggled: eyleminizde, anahtarın durumunu sınamak için örnek değişkeninizi kullanıyorsunuz, cellForRowAtIndexPath içinde bildirilen değil. Böyle sender parametresini kullanabilirsiniz:

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

P.S.: Ben UIControlEventValueChanged yerine UIControlEventTouchUpInside kullanacaktır.

+0

Teşekkürler. Aptalca hata! UISwitch * 'kaldırıldı ve bir cazibe gibi çalıştı. – iosfreak

+0

Bir şey değil :) – albertamg

İlgili konular