2011-05-28 7 views
16

मैं पता लगाने के लिए कोशिश कर रहा हूँ जब एक UISwitch यह/बंदयह पता लगाने के लिए कि क्या 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]; 
} 

}

हालांकि, जब मैं इस पर स्विच करें, यह यह बंद है कहेंगे। क्या देता है?

धन्यवाद।

उत्तर

52

आपके 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!"); 
    } 
} 

पी.एस: मैं UIControlEventValueChanged बजाय UIControlEventTouchUpInside का प्रयोग करेंगे।

+0

धन्यवाद। बेवकूफी़ भरी गल्ती! हटाया गया 'UISwitch *' और यह एक आकर्षण की तरह काम किया। – iosfreak

+0

आपका स्वागत है :) – albertamg

संबंधित मुद्दे