2012-05-29 16 views
6

मैं इस सवाल को देखा:मैं एक UISwitch को स्थिर UITableView में कैसे एम्बेड कर सकता हूं?

UISwitch in a UITableView cell

लेकिन यह एक गतिशील पेज के साथ काम किया था। मैं वास्तव में बस अपने ऐप के लिए एक सेटिंग पेज बनाने की कोशिश कर रहा हूं और तालिका में से कुछ कोशिकाओं (उनमें से सभी नहीं), टेबल सेल पर स्विच की आवश्यकता है। मैं ये कैसे करूं?

उत्तर

5

बस एक यूआईएसविच को उस सेल पर खींचें जिसे आपने रखा है। इसके बाद आप मूल संपादक को तार करने के लिए सहायक संपादक (जो कमाल है) का उपयोग कर सकते हैं। एक टिप मैं आपको दूंगा, अगर आप कई कोशिकाओं की योजना बना रहे हैं जो उपस्थिति में समान होंगे, तो अनुभाग में पहला बनाएं और इसे सही तरीके से बाहर रखें, फिर आप उस खंड में पंक्तियों में से # बढ़ा सकते हैं और आईबी प्रतियां बनायेगा आपके लिए मौजूदा पंक्ति का।

+0

+1 स्थैतिक टीवी इसे पाई के रूप में आसान बनाता है। :) – lnafziger

+7

नोट करें कि स्टोरीबोर्डिंग के दौरान स्थिर UITableViewCell पर एक UISwitch तत्व खींचने के लिए, सेल शैली "कस्टम" – Archie1986

+0

@ Archie1986 की शैली होनी चाहिए, यह "मूल" कोशिकाओं के लिए भी काम करता है, हालांकि कुछ मजबूती के साथ। –

0

आप वही करते हैं जैसा आपने लिंक किए गए प्रश्न में किया है। "गतिशील" तालिका जैसी कोई चीज़ नहीं है। तालिका सिर्फ आपके मॉडल को प्रदर्शित करती है। आपका मॉडल गतिशील हो सकता है, लेकिन तालिकादृश्य नहीं है। किसी भी तरह से, उस प्रश्न के उत्तर का पालन करें और आपके टेबलव्यू में एक स्विच होगा।

+0

यह सही नहीं है। आईओएस 5 से शुरू होने पर, स्थैतिक सेल टेबलव्यूज़ हैं जिन्हें किसी भी डेटासोर्स की आवश्यकता नहीं है, इसके विपरीत, डायनामिक प्रोटोटाइप कोशिकाओं को किसी प्रकार के डेटासॉर की आवश्यकता होती है। –

+0

पर्याप्त मेला। इसके बारे में पता नहीं था। दस्तावेज़ पढ़ने के बाद हालांकि यह अभी भी CellForRowAtIndexPath का उपयोग करना आसान लगता है। – sosborn

+2

मेरे संपादित उत्तर में वीडियो लिंक देखें, मुझे लगता है कि आप अपने दिमाग को बदल देंगे कि एससी टीवी –

2

मैं इस मामले के लिए एक फ़ंक्शन बनाता हूं और यह मेरे लिए अच्छा काम करता है .. इसे आजमाएं, सेल निर्माण में पहले आप उस पंक्ति को देख सकते हैं जिसमें आप UISwitch को पूर्व में जोड़ना चाहते हैं।

if(indexPath.row == 0) 
     [self createOnOffView:cell withTitle:@"Somthing" withTag:1001 defaultVal:YES]; 

और समारोह है:

- (void) createOnOffView:(UITableViewCell*) cell withTitle:(NSString*) title withTag:(int)tag defaultVal:(BOOL) defaultVal 
{ 
    CGRect rect; 

    cell.textLabel.text = title; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 

    rect = cell.contentView.frame; 

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     rect.origin.x = cell.frame.size.width - 20; 
    else 
     rect.origin.x = rect.size.width/2 +35; 

    rect.origin.y = rect.size.height/2 - 15;  
    rect.size.width = 60;  

    UISwitch *switchView = [[UISwitch alloc] initWithFrame:rect]; 
    [cell.contentView addSubview:switchView]; 
    [switchView addTarget:self action:@selector(didChangeSwitch:) forControlEvents:UIControlEventValueChanged]; 

    switchView.tag = tag; 

    [switchView setOn:defaultVal]; 

    [switchView release]; 
} 

और जब मूल्य है स्विच को इस विधि के सक्रिय होने का है .. ताकि आप जान सकें जो टैग के आधार पर स्विच

- (void) didChangeSwitch:(UISwitch*)switchView 
{ 
    if(switchView.tag == 1001) 
    { 
     //Do Somthing 
    } 

    if(switchView.tag == 1002) 
    { 
     //Do Somthing 
    }  
} 

आशा है कि यह सहायक होगा :)

+1

यह इंटरफ़ेस बिल्डर का उपयोग करने के लिए इच्छित सेल पर स्विच को खींचने के जितना आसान नहीं है। Static सेल tableivews कैसे काम करते हैं पर एक नज़र डालें। इनका उपयोग करते समय किसी भी डेटासोर्स विधियों की आवश्यकता नहीं है, आप केवल नियमित व्यू कंट्रोलर की तरह ऑब्जेक्ट्स के लिए IBActions को वायरस करते हैं। –

15

इंटरफ़ेस बिल्डर में यह कैसे काम करता है। कोड की कोई ज़रूरत नहीं है।

  • यूआईविच को अपने व्यू कंट्रोलर में खींचें। इसे मुख्य दृश्य के बाहर होना चाहिए। किंडा बस कुछ अन्य चीजों के साथ 'चिलिन'।

  • तालिका दृश्य कक्ष पर Ctrl-क्लिक करें जिसमें यह स्विच होना चाहिए, और नए स्विच पर खींचें। 1 देखें। enter image description here

  • तालिका दृश्य सेल की accessoryView आउटलेट के लिए स्विच कनेक्ट करें। 2 देखें। enter image description here

भागो एप्लिकेशन और घड़ी स्विच तालिका में दिखाई - हो गया!

नोट: स्विच इंटरफेस बिल्डर में अजीब रूप से दिखाई नहीं देता है। लेकिन जब आप ऐप

चलाते हैं तो यह दिखाएगा यदि आप इसे एक इंस्टेंस वैरिएबल तक भी जोड़ना चाहते हैं - उदाहरण के लिए आप इसे बाद में अपनी "ऑन" संपत्ति पढ़ सकते हैं - इसे किसी आउटलेट से कनेक्ट करें जैसा कि आप चाहते हैं अन्य दृश्य 3, 4

enter image description here enter image description here

पुनश्च: ध्यान रखें कि UISwitch/बंद राज्य पर अपने संपत्ति "पर", नहीं "चयनित" है। मैं बस इसे जोड़ रहा हूं क्योंकि यह थोड़ी उलझन में है।

पीपीएस: oversized पिक्स के लिए खेद है, मैं रेटिना स्क्रीन पर हूं।

+0

यह आशाजनक लग रहा है .. लेकिन दूसरे चरण के बाद और 'यह तालिका में स्विच दिखाई देगा - किया गया!' भाग में मुझे तालिका में स्विच दिखाई नहीं देता है। मुझे पूरा यकीन है कि मैंने सही कदमों का पालन किया क्योंकि मुझे अंधेरे पॉपअप आउटलेट दिखाई देता है - accessoryView दिखाई देता है। कोई सुराग? – Bruce

+0

अच्छी तरह से ऐप चलाएं - क्या आप स्विच देखते हैं? मुझे अभी एहसास हुआ कि यह इंटरफेस बिल्डर में दिखाई नहीं देता है। लेकिन जब आप ऐप चलाते हैं तो यह सेल में होगा। इसे आज़माएं एक बार यह आपके लिए काम करता है, मैं वहां शब्द को अपडेट कर दूंगा। – n13

+0

आप सही हैं, यह सिर्फ सही जगह पर दिखाई देता है जो मैं चाहता हूं। बहुत बढ़िया! मैं यह भी पता लगा रहा हूं कि जब भी इसे फ़्लिप किया जाता है तो कुछ कोड चलाने के लिए स्विच को कैसे हुक करना है। कोई संकेतक? – Bruce

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