मैं UISwitch
को UITableView
सेल पर कैसे एम्बेड कर सकता हूं? सेटिंग्स मेनू में उदाहरण देखा जा सकता है।UISwitch एक UITableView सेल
मेरे वर्तमान समाधान:
UISwitch *mySwitch = [[[UISwitch alloc] init] autorelease];
cell.accessoryView = mySwitch;
मैं UISwitch
को UITableView
सेल पर कैसे एम्बेड कर सकता हूं? सेटिंग्स मेनू में उदाहरण देखा जा सकता है।UISwitch एक UITableView सेल
मेरे वर्तमान समाधान:
UISwitch *mySwitch = [[[UISwitch alloc] init] autorelease];
cell.accessoryView = mySwitch;
accessoryView के रूप में यह निर्धारित करना आमतौर पर जाने के लिए रास्ता है। आप इसे tableView:cellForRowAtIndexPath:
में सेट अप कर सकते हैं आप स्विच फ़्लिप होने पर कुछ करने के लिए लक्ष्य/क्रिया का उपयोग करना चाह सकते हैं। इस तरह:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
switch([indexPath row]) {
case MY_SWITCH_CELL: {
UITableViewCell *aCell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"];
if(aCell == nil) {
aCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SwitchCell"] autorelease];
aCell.textLabel.text = @"I Have A Switch";
aCell.selectionStyle = UITableViewCellSelectionStyleNone;
UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
aCell.accessoryView = switchView;
[switchView setOn:NO animated:NO];
[switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
[switchView release];
}
return aCell;
}
break;
}
return nil;
}
- (void)switchChanged:(id)sender {
UISwitch *switchControl = sender;
NSLog(@"The switch is %@", switchControl.on ? @"ON" : @"OFF");
}
आप एक UISwitch या सेल के accessoryView
के लिए किसी भी अन्य नियंत्रण जोड़ सकते हैं। इस तरह यह सेल के दाईं ओर दिखाई देगा जो शायद आप चाहते हैं।
आप इंटरफेसबिल्डर में सेल तैयार कर सकते हैं, इसे अपने व्यू कंट्रोलर के आईबीओटलेट से लिंक कर सकते हैं और टेबलव्यू उचित पंक्ति के लिए पूछने पर इसे वापस कर सकते हैं।
इसके बजाय, आप सेल के लिए एक अलग xib (फिर से आईबी के साथ) बना सकते हैं और इसे सेल निर्माण पर UINib का उपयोग करके लोड कर सकते हैं।
अंत में, आप प्रोग्राम को प्रोग्रामेटिक रूप से स्विच कर सकते हैं और इसे अपने सेल कंटेंटव्यू या एक्सेसरीव्यू में जोड़ सकते हैं।
जो आपको सबसे अच्छा लगाता है वह काफी हद तक निर्भर करता है कि आप क्या करना चाहते हैं। यदि आपकी टेबलव्यू सामग्री को ठीक किया गया है (सेटिंग्स पृष्ठ आदि के लिए) पहले दो अच्छी तरह से काम कर सकते हैं, यदि सामग्री गतिशील है तो मैं प्रोग्रामेटिक समाधान पसंद करूंगा। कृपया जो कुछ आप करना चाहते हैं उसमें अधिक विशिष्ट रहें, इससे आपके प्रश्न का उत्तर आसान हो जाएगा।
मैं प्रोग्रामेटिक समाधान पसंद करूंगा (इसके बावजूद यह सेटिंग पृष्ठ के लिए है), लेकिन मुझे यह भी रूचि है कि पहले दो विकल्प कैसे काम करते हैं। शायद आप उन्हें थोड़ा विस्तार से समझा सकते हैं। – testing
if (indexPath.row == 0) {//If you want UISwitch on particular row
UISwitch *theSwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
[cell addSubview:theSwitch];
cell.accessoryView = theSwitch;
}
आप 'initWithFrame' का उपयोग क्यों करते हैं? आप 'addSubview' का उपयोग क्यों करते हैं? 'स्विच' को एक चर नाम के रूप में उपयोग नहीं किया जा सकता है। – testing
स्विच नाम के लिए खेद है। मेरे पास कुछ कोड था .. मैंने बस इसमें परिवर्तनीय नाम बदल दिया। – kthorat
यह मेरे लिए काम किया। कम कोड के साथ प्रभावी समाधान। –
वर्तमान तरीके से आप क्या कर रहे हैं? – MobileMon