2012-06-21 6 views
29

मेरे पास UIButton है जिसमें 2 स्थितियां होनी चाहिए - "प्ले" और "रोकें"; यानी - पहली बार उपयोगकर्ता इसे देखता है "प्ले" कहता है और फिर जब भी उपयोगकर्ता इसे क्लिक करता है तो उसे "प्ले" और "पॉज़" के बीच स्विच करना चाहिए।आईओएस में प्रोग्रामबेटिक रूप से UIButton में टेक्स्ट लेबल संपत्ति को कैसे बदलें?

मैं स्वयं नियंत्रक बनाने में कामयाब रहा - सामग्री खेला जाता है और ठीक से रोका जाता है - लेकिन मैं UIButton टेक्स्ट लेबल टेक्स्ट को बदल नहीं सकता।

मैं का उपयोग करें:

myButton.titleLabel.text = @"Play"; 

myButton.titleLabel.text = @"Pause"; 

यह काम नहीं कर रहा। पाठ बदल नहीं रहा है। मैंने भी कोशिश की [myButton.titleLabel setText: @ "रोकें"] और यह भी काम नहीं कर रहा है।

मैं इसे कैसे सेट कर सकता हूं?

उत्तर

66

यह होना चाहिए:

[myButton setTitle:@"Play" forState:UIControlStateNormal]; 

आप state रूप में अच्छी तरह से पारित करने की जरूरत है। आप अन्य state के here देख सकते हैं।

फिर आप कुछ इस तरह कर सकते हैं:

[myButton setTitle:@"Play" forState:UIControlStateNormal]; 
[myButton setTitle:@"Stop" forState:UIControlStateSelected]; 
1

और अगर आप पृष्ठ लोड पर लोड करने के लिए चाहते हैं, और समर्थन स्थानीय भाषा:

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    if (self.flagToChangeLabel){ 
     NSString* newBtnTitle = NSLocalizedString(@"LOCALIZED_KEY", nil); 
     [self.laterButton setTitle:newBtnTitle forState:UIControlStateNormal]; 
     [self.laterButton setTitle:newBtnTitle forState:UIControlStateSelected]; 
    } 
} 
2

मैंने पाया यह कुछ हद तक से बाहर होने के लिए जिम्मेदार तारों के बाद से तारीख जोड़ा गया था। एक स्टोरीबोर्ड में असाइन किए गए बटनों के स्पष्ट रूप से शीर्षक स्ट्रिंग को जिम्मेदार ठहराते हैं। जिम्मेदार शीर्षक एनएसएसटींग खिताब पर प्राथमिकता लेते हैं, इसलिए यदि आप शीर्षक के रूप में एक साधारण स्ट्रिंग का उपयोग करना चाहते हैं तो आपको पहले जिम्मेदार शीर्षक को हटाना होगा। मैंने नीचे किया, हालांकि एक बेहतर तरीका हो सकता है। आप, निश्चित रूप से, अपना नया शीर्षक भी एक जिम्मेदार स्ट्रिंग बना सकते हैं।

[myButton setAttributedTitle: nil  forState: 0xffff]; 
[myButton   setTitle: @"Play" forState: UIControlStateNormal]; 
संबंधित मुद्दे