2012-06-24 13 views
5

मेरे पास मेरे व्यू कंट्रोलर के नीचे 3 बटन हैं, btn1 btn2 btn3, मैं टैब बार के बजाय उनका उपयोग कर रहा हूं क्योंकि मेरी आवश्यकताओं के अनुसार पूरी तरह से टैब बार को कस्टमाइज़ करना संभव नहीं है।एक यूआई बटन दबाकर (राज्य चयनित/हाइलाइट किया गया), जब तक कि कोई अन्य बटन दबाया न जाए?

अब समस्या यह है कि, जब बीटीएन 1 दबाया जाता है, तो मैं सामान्य छवि छवि के बजाय, अपनी छवि को एक ग्रे आयताकार में बदलना चाहता हूं। मैंने आउटलेट के सेटिमेज और यूकंट्रोल्रोलस्टेट गुणों का उपयोग करके बटन, बीटीएन 1 ऑटलेट के लिए घोषित आउटलेट में दोनों राज्यों के लिए छवियां सेट की हैं।

समस्या यह है कि, मैं बटन को तब तक नहीं रख सकता जब तक कि बीटीएन 2 या बीटीएन 3 दबाया न जाए। बीटीएन एक चयनित राज्य छवि में केवल तब तक बदलता है जब तक इसे दबाया जाता है, जिस क्षण मैं इसे छोड़ देता हूं, यह वापस अपने सामान्य स्थिति में बदल जाता है।

मैं बीटीएन 1 की छवि को चयनित छवि के रूप में कैसे रख सकता हूं जब तक कि 2 अन्य बटन दबाए जाएं?

उत्तर

4

था आप "हाइलाइट किया गया" राज्य के लिए एक छवि सेट कर दिया जाता क्या , यही कारण है कि जब आप इसे दबाते हैं तो आप अपनी छवि देख सकते हैं।

क्या आप क्या करना चाहते

1) चयनित राज्य

2) (आपके विचार नियंत्रक के लिए एक संपत्ति बनाने के बस नियंत्रण हैडर के लिए बटन खींचें) के लिए छवि सेट सहायक दृश्य का उपयोग कर रहा है (स्टोरीबोर्ड पर जबकि, ऊपर दाईं तरफ दूसरा वर्ग) बटन की कार्रवाई प्रकार के लिए अपनी पद्धति पर

3):

button.selected = !button.selected; 

(स्पष्ट रूप से प्रतिनिधि फीता बटन जो कुछ भी आप अपनी संपत्ति के लिए) का नाम दिया

+0

का उपयोग करने की योजना बनाते हैं तो आपको सेमी-कॉलन होना चाहिए, धन्यवाद, यह काम करता है लेकिन यह मेरी समस्या का एक हिस्सा हल करता है, यानी बटन छवि बदलता है और बदलता रहता है, लेकिन जब बटन फिर से क्लिक किया जाता है, तो यह सामान्य स्थिति छवि में वापस बदल जाता है, जब कोई अन्य बटन क्लिक नहीं होता है। – OccamsRazor

+2

बिल्कुल , ये बटन एक-दूसरे से संबंधित नहीं हैं, आपको तर्क स्वयं करना है। बटन 2 के लिए कार्रवाई की तरह कुछ बटन जोड़ें 1। चयन = नहीं; बटन 3. चयन = नहीं; – Pochi

+0

ओह के, धन्यवाद, यह सोच रहा था कि वह है या नहीं इसे करने का सही तरीका। अब वह पता चला। धन्यवाद। बीटीडब्ल्यू आपके ज्ञान के अनुसार ऐप्स की मंजूरी के साथ उत्पन्न होने वाली किसी भी समस्या की संभावना होगी यदि मैं इस तरह की विधि का उपयोग करता हूं टैब बार एफ? – OccamsRazor

1

बटन को चुनने के लिए, आपको सेट को चुनने की आवश्यकता है: YES विधि जो आपके बटन पर कॉल करता है। उदाहरण के लिए:

- (void) methodThatYourButtonCalls: (id) sender { 
     [self performSelector:@selector(flipButton:) withObject:sender afterDelay:0.0]; 


} 

- (void) flipButton:(UIButton*) button { 
    if(button.selected) 
     [button setSelected:NO]; 
    else 
     [button setSelected:YES]; 

} 

मैं जानता हूँ कि यह एक छोटे अजीब बुला performSelector दिखता है: बजाय सिर्फ बुलाने की [इस setSelected: हाँ], लेकिन बाद कभी नहीं मेरे लिए काम करता है, जबकि पूर्व करता है!

जब कोई अलग दबाया जाता है तो बटन को अचयनित करने के लिए बटन प्राप्त करने के लिए, मैं एक आवृत्ति चर जोड़ने का सुझाव देता हूं जो वर्तमान में चयनित बटन पर पॉइंटर रखता है, इसलिए जब कोई नया स्पर्श होता है तो आप फ्लिप बटन को कॉल कर सकते हैं: अचयनित करने के लिए तदनुसार पुराना एक। तो अब अपने कोड को पढ़ने के लिए चाहिए:

अपने इंटरफेस

@interface YourViewController : UIViewController 
{ 
    UIButton *currentlySelectedButton; 
} 

और अपने कार्यान्वयन के लिए इन तरीकों के लिए सूचक जोड़ने

- (void) methodThatYourButtonCalls: (id) sender { 
    UIButton *touchedButton = (UIButton*) sender; 

    //select the touched button 
    [self performSelector:@selector(flipButton:) withObject:sender afterDelay:0.0]; 

    if(currentlySelectedButton != nil) { //check to see if a button is selected... 
     [self flipButton:currentlySelectedButton]; 

    currentlySelectedButton = touchedButton; 
} 

- (void) flipButton:(UIButton*) button { 
    if(button.selected) 
     [button setSelected:NO]; 
    else 
     [button setSelected:YES]; 

} 
+0

सहायता के लिए धन्यवाद, लेकिन ऐप को उस पल को दुर्घटनाग्रस्त कर देता है जब मैं बटन दबाता हूं, त्रुटि को अपरिचित अपवाद के साथ, अपरिचित चयनकर्ता उदाहरण के लिए भेजा जाता है। – OccamsRazor

+0

सुनिश्चित करें कि जब आप उस बटन के लिए लक्ष्य निर्धारित करते हैं जिसे आप चयनकर्ता कहते हैं "methodThatYourButtonCalls:" और नहीं "methodThatYourButtonCalls" (ध्यान दें कि यदि आप: (id) प्रेषक तर्क – Kpmurphy91

2

यहाँ मैं क्या किया है: निम्नलिखित कार्रवाई विधि के लिए

  1. लिंक सभी 3 बटन
  2. सभी 3 बटन
  3. की सरणी बनाएं बटन सेट कि चयनित
  4. सेट करने के लिए विधि लागू अन्य 2 बटन

    - (IBAction)buttonPressed:(id)sender 
    { 
        NSArray* buttons = [NSArray arrayWithObjects:btn1, btn2, btn3, nil]; 
        for (UIButton* button in buttons) { 
         if (button == sender) { 
          button.selected = YES; 
         } 
         else { 
          button.selected = NO; 
         } 
        } 
    } 
    
  5. चयनित नहीं करने के लिए

आशा है कि इससे मदद मिलती है।

चीयर्स!

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

  • कोई संबंधित समस्या नहीं^_^