2009-08-21 12 views
13

मैं अपने आईफोन एप्लिकेशन में एक टॉगल बटन बनाना चाहता हूं। हालांकि, मुझे नहीं पता कि इसके लिए सबसे अच्छा तरीका क्या होगा।आईफोन टॉगल बटन कार्यान्वयन

मैं दो विकल्पों पर विचार कर रहा हूं।

मैं एक UIButton subclass सकता है। इस तरह मुझे स्पर्श हैंडलिंग को लागू करने की आवश्यकता नहीं है। मैं सिर्फ एक विधि बना सकता हूं जो एक बूलियन लौटाता है कि यह इंगित करता है कि बटन चालू या बंद है या नहीं।

मैं एक UIView उपclass से भी शुरू कर सकता हूं और इसे स्क्रैच से बना सकता हूं। मुझे लगता है कि एक संक्रमण एनीमेशन जैसी चीज़ों को करना आसान होगा, लेकिन मुझे अपना खुद का स्पर्श प्रबंधन बनाना होगा।

आपको सबसे अच्छा क्या लगता है? या आप एक बेहतर तरीका पता होगा? (हो सकता है कि वहाँ एक खुला स्रोत/मुफ्त दृश्य वेब पर उपलब्ध है?)

संपादित करें: मैं UISwitch उपयोग करने के लिए क्योंकि मैं अपने टॉगल बटन कि तरह लग रहे करना चाहते हैं नहीं करना चाहती। मैं चाहता हूं कि यह एक बड़ा आयताकार बटन बनें और राज्य को इंगित करने के लिए पृष्ठभूमि परिवर्तन करें।

धन्यवाद!

उत्तर

4

आप UIButton का उपयोग करें और अपने enabled गुण सेट कर सकते हैं।

इंटरफ़ेस बिल्डर में, आप सक्षम और अक्षम राज्यों के लिए अलग-अलग छवियां सेट कर सकते हैं, और IBAction संपत्ति को बदल सकते हैं।

+0

यह चालाक है। धन्यवाद! –

+12

मैं सोच रहा था कि आपने 'चयनित' की बजाय 'सक्षम' संपत्ति क्यों चुना है? कुछ समय पहले इस टिप को पढ़ने के बाद, मैंने आज इसे 'चयनित' का उपयोग करके लागू किया। बहुत अच्छा काम करता है। फिर मैंने टिप को दोबारा पढ़ा और 'सक्षम' की कोशिश की। एक बार अक्षम हो जाने पर, आप अब बटन पर क्लिक नहीं कर सकते हैं, इसलिए यह एक अच्छा टॉगल नहीं है। क्या मुझे कुछ सेटिंग याद आई है? – slothbear

+0

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

0

क्या पहले से ही कोई टॉगल बटन नहीं है, या क्या मुझे यहां कुछ याद आ रही है?

संपादित करें: जैसा कि अन्य ने कहा है, इसे UISwitch कहा जाता है, और यह चालू और बंद हो जाता है।

+0

'UISwitch' टॉगल –

+0

धन्यवाद लागू करने के लिए एक तरीका है। मुझे सही नाम याद नहीं आया, और मेरे पास इस सिस्टम पर आईफोन एसडीके स्थापित नहीं है। – Cinder6

0

हो सकता है मुझे नहीं समझ में सवाल ठीक से ..why आप प्रयोग नहीं कर UISwitch

0

मैंने भी यूआईस्विच को देखा, लेकिन मेरे मामले में मैं एक चालू/बंद बटन नहीं चाहता, मैं वास्तव में एक टॉगल बटन चाहता हूं। जो मैं करने की कोशिश कर रहा हूं, फिर मेरे मामले में, बटनों का एक ब्लॉक है जो UISegmentedControl की तरह दिखता है, लेकिन जहां उपयोगकर्ता एक समय में नियंत्रण में से एक से अधिक बटन "टॉगल" कर सकता है। जिस मुद्दे को मैं हल करने की कोशिश कर रहा हूं वह यह है कि मेरे पास स्क्रीन पर आने के लिए बहुत सीमित स्क्रीन रीयलस्टेट और बहुत सारे टॉगल हैं।

मेरी गिरावट शायद टॉगल कोशिकाओं से भरा UITableView होने जा रही है। इस तरह से मैं स्क्रीन के एक निश्चित, स्क्रॉल करने योग्य क्षेत्र में जितना चाहूं उतना टॉगल जोड़ सकता हूं।

अफसोस की बात है कि, यूआईएसविच हमेशा यूआई चश्मे को ध्यान में रखता नहीं है, इसलिए मुझे लगता है कि मूल पोस्ट पोस्ट करने वाले सज्जन को ऑन/ऑफ स्विच की तलाश नहीं थी, बल्कि एक बटन चाहता था जिसने अपना राज्य बदल दिया किसी न किसी तरह।

0

मुझे यह भी करने की ज़रूरत है। सक्षम स्थिति को सेट नहीं करने के लिए बटन को वापस टॉगल करने से रोकें?

अद्यतन

लोग UISwitch सुझाव दे रहे हैं लेकिन यह सभी प्रासंगिक ऊपर, अधिक, विकलांग, selectedUp, SelectedOver, selectedDisabled राज्यों के साथ चमड़ी जा सकता है?

+0

हां, तो मैं जो कर रहा हूं वह 'चयनित' संपत्ति का उपयोग कर रहा है, जहां तक ​​मुझे पता है - वास्तव में UIButton के लिए कुछ भी नहीं करता है। –

+0

क्या UIButton स्किनिंग के लिए सभी टॉगल बटन राज्यों का समर्थन करता है। मेरी अज्ञानता को क्षमा करें क्योंकि मैं इसे फ्लेक्स डेवलपर के रूप में देख रहा हूं। फ्लेक्स में एक टॉगल बटन में सामान्य, ओवर, अक्षम राज्य होते हैं लेकिन फिर भी चुना गया है, चयनित ओवर, चयनित डिस्प्ले इत्यादि। आपको उचित टॉगल बनाने के लिए इन सभी राज्यों की आवश्यकता होगी। और हाँ, आपको एक चयनित संपत्ति की भी आवश्यकता है। यदि यह UIButton पर मौजूद है तो यह सुझाव देगा कि आप टॉगलिंग को सक्रिय कर सकते हैं। क्या ऐसा है? –

+0

नहीं, मुझे विश्वास नहीं है कि यह है। लेकिन आप क्या कर सकते हैं सेट को ओवरराइट किया गया है: विधि और स्टाइल को वहां बदलें। –

2

बस एक (आईबीएक्शन) विधि और एक बूल भी बनाएं। BOOL डिफ़ॉल्ट को FALSE पर सेट करें। आपका IBAction इस तरह दिखना चाहिए:

- (IBAction) .... { 

    if (bool) { 
     // do your things 
    } 

    else { 
     // do your things 
    } 

    bool =! bool 
} 

वह मेरे लिए काम करता है!

+1

यह काम करेगा-, लेकिन यह बहुत समझ नहीं है-। –

13
-(IBAction)toggle{ 
    if (button.selected == NO) { 
     button.selected = YES; 

    } 
    else { 
     button.selected = NO; 
    } 
} 

या

-(IBAction)toggle:(UIButton*)sender 
{ 
sender.selected = !sender.selected; 
} 

सरल दोस्त

+8

क्या होगा यदि 'बटन। चयन =! बटन। चयनित;' सबसे सरल दोस्त! : डी –

+0

हम्म अच्छा है :) – Mashhadi

+1

यहां तक ​​कि बेहतर: '- (आईबीएक्शन) टॉगल: (UIButton *) प्रेषक { प्रेषक.सेक्टेड =! प्रेषक। चयन; } ' – AlexChaffee

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