2012-07-20 21 views
34

मुझे लगता है कि यह शायद एक बेवकूफ सवाल है ... लेकिन वैसे भी मेरे पास इस तरह का अजीब UIButton शीर्षक व्यवहार है।UIButton शीर्षक डिफ़ॉल्ट में बदलता है

बटन आईबी में एक क्रिया और संपत्ति दोनों से स्थापित और कनेक्ट किया गया है (कार्रवाई startButtonPushed है और संपत्ति startButton है)।

bool buttonStateStop; 

- (IBAction)startPushed:(id)sender 
{ 
    if (buttonStateStop) 
    { 
     [appD.locationManager stopSavingLocations]; 
     startButton.titleLabel.text = @"Start"; 
     buttonStateStop = NO; 
    } 
    else 
    { 
     [appD.locationManager startSavingLocations]; 
     startButton.titleLabel.text = @"Stop"; 
     buttonStateStop = YES;   
    } 
} 

मूल रूप से मैं आईबी में डिफ़ॉल्ट शीर्षक था का एक अंश के लिए "प्रारंभ" करने के लिए सेट है, लेकिन जब भी मैं बटन दबाया यह "बंद" में बदल जाएगा: दृश्य नियंत्रक के अंदर मैं कार्रवाई इस तरह की स्थापना की है एक सेकंड और फिर वापस। मैंने यह पता लगाने की कोशिश करते हुए कुछ समय बिताया कि शीर्षक "स्टार्ट" पर क्यों सेट हो रहा है। आखिरकार मैंने आईबी शीर्षक को "xxxxxx" में बदल दिया और महसूस किया कि इससे कोई फर्क नहीं पड़ता कि बटन परिवर्तन के शीर्षक के तुरंत बाद आईबी शीर्षक पुनः प्राप्त हो जाता है।

तो सवाल यह है: आईबी बटन के शीर्षक को डिफ़ॉल्ट रूप से क्यों बदलता रहता है? मैं पहले कभी इस व्यवहार में नहीं आया है। और (जाहिर है) मैं इसे कैसे ठीक कर सकता हूं?

अतिरिक्त जानकारी: बटन के केवल संदर्भ हैं @property, @synthesize, और उपरोक्त कोड में बयान। दृश्य एक नेविगेशन नियंत्रक के अंदर है।

उत्तर

65

इसके बजाय आप titleLabel.text संपत्ति की स्थापना के setTitle:forState: विधि का उपयोग करने की जरूरत है:

[startButton setTitle:@"Start" forState:UIControlStateNormal]; 
// Normal and highlighted titles do not need to be the same 
[startButton setTitle:@"Start!" forState:UIControlStateHighlighted]; 

क्या अब क्या होता है आप लेबल वर्तमान स्थिति को देखते प्रतिनिधित्व करता है कि में शीर्षक सेट करता है, लेकिन एक बार राज्य में परिवर्तन धक्का से सामान्य तक, बटन नए राज्य के लिए लेबल को वापस शीर्षक में रीसेट करता है (जो पाठ आपने आईबी में सेट किया है)।

+0

आप सही हैं है यह मेरी समस्या थी। बहुत अजीब व्यवहार, क्योंकि मैंने पहले बिना किसी परेशानी के ठीक वही काम किया है। – Dustin

+0

यह अजीब बात है कि यह "कभी-कभी काम करता है!" समस्या यह है कि डॉको में वे उल्लेख करते हैं कि आप .titleLabel का उपयोग कर पाठ के ** स्टाइल ** (आदि) को बदल दें। क्या परेशानी है! – Fattie

5

इस की तेज संस्करण,

startButton.setTitle("Start", forState: UIControlState.Normal) 
+0

अब 'startButton.setTitle ("प्रारंभ करें", के लिए: असामान्य)' जब तक वे इसे फिर से नहीं बदलते – CupawnTae

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