2011-02-10 24 views
95

में बटन का टेक्स्ट और अक्षम बटन बदलें, आप बटन के टेक्स्ट को कैसे बदलते हैं और आईओएस में एक बटन अक्षम करते हैं?आईओएस

उत्तर

196

हे नम्रथा, यदि आप यूआई बटन के टेक्स्ट और सक्षम/अक्षम स्थिति को बदलने के बारे में पूछ रहे हैं, तो इसे निम्न प्रकार से आसानी से किया जा सकता है;

- (IBAction) triggerActionWithSender: (id) sender; 
:

[myButton setTitle:@"Normal State Title" forState:UIControlStateNormal]; // To set the title 
[myButton setEnabled:NO]; // To toggle enabled/disabled 

आप इंटरफ़ेस बिल्डर में बटन बनाया गया और कोड में उन्हें उपयोग करना चाहते है, तो आप तथ्य है कि वे IBAction कॉल करने के लिए एक तर्क के रूप में पारित कर रहे हैं का लाभ ले सकते

यह बटन से बाध्य किया जा सकता है और कार्रवाई को ट्रिगर होने पर आपको sender तर्क में बटन मिलेगा। अगर वह (क्योंकि आप कार्यों की तुलना में कहीं और बटन का उपयोग करने की जरूरत है) पर्याप्त नहीं है, बटन के लिए एक आउटलेट की घोषणा:

@property(retain) IBOutlet UIButton *someButton; 

तो यह संभव नियंत्रक को आईबी में बटन बाध्य करने के लिए, निब लोड हो रहा है है इंटरफेस लोड करते समय कोड संपत्ति मूल्य निर्धारित करेगा।

+0

धन्यवाद! मेरे पास मेरे ऐप में UIButtons हैं लेकिन मैंने उन्हें कोड में कहीं भी उल्लेख नहीं किया है। मैंने लक्ष्य-क्रिया तंत्र को पंजीकृत करने के लिए इंटरफ़ेस बिल्डर का उपयोग किया है (उस अंत में, मेरे पास बटन क्लिक को संभालने के लिए कुछ IBAction विधियां हैं) तो मैं बटन कैसे एक्सेस करूं ?? – Namratha

+1

अभी मुझे एहसास हुआ है कि मैं आपका जवाब संपादित कर रहा था, MGunetileke, मेरा नहीं :) आशा है कि यह आपके साथ ठीक है। – zoul

+1

बस यह भी जोड़ना है कि अगर आप अपने लिए @ संपत्ति घोषित करना चाहते हैं। एक्सकोड 4 में, CTRL कुंजी दबाए रखें, बटन पर क्लिक करें और फिर अपने माउस को दृश्य की संबंधित .h फ़ाइल में खींचें। संपत्ति नाम के लिए आपको सूचित करने के लिए एक संवाद पॉप अप करता है। फिर वॉयला आपके पास आपके कोड में उपयोग करने के लिए संपत्ति होगी! – milesmeow

9

यह मानते हुए कि बटन एक UIButton है:

UIButton *button = …; 
[button setEnabled:NO]; // disables 
[button setTitle:@"Foo" forState:UIControlStateNormal]; // sets text 

UIButton के दस्तावेज़ देखें।

19
[myButton setTitle: @"myTitle" forState: UIControlStateNormal]; 

अपना शीर्षक सेट करने के लिए UIControlStateNormal का उपयोग करें।

वहाँ राज्यों की जोड़ी है कि UIButtons प्रदान करते हैं आप देख सकते हैं कर रहे हैं:

[myButton setTitle: @"myTitle" forState: UIControlStateApplication]; 
[myButton setTitle: @"myTitle" forState: UIControlStateHighlighted]; 
[myButton setTitle: @"myTitle" forState: UIControlStateReserved]; 
[myButton setTitle: @"myTitle" forState: UIControlStateSelected]; 
[myButton setTitle: @"myTitle" forState: UIControlStateDisabled]; 
+0

मैं इस पोस्ट में +1 करने जा रहा था लेकिन ऐसा करने का फैसला नहीं किया। [self.erase बटन सेटटाइट: @ "मिटाएं" forState: UIControlStateDisabled]; यह बटन मंद नहीं करता है। यह कुछ भी नहीं करता है, अगर आपने पहले ही सेट किया है: जैसा नहीं। – coolcool1994

12

तो किसी ने स्विफ्ट में एक समाधान की तलाश में है, यहाँ उतरा, यह होगा:

myButton.enabled = false // disables 
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text 
अक्षम के लिए

[mybtn setTitle:@"My Button" forState:UIControlStateNormal]; 
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 

:

3

बटन शीर्षक बदलने के लिए

[mybtn setEnabled:NO]; 
0

यदि आप शीर्षक को टैप करने के जवाब के रूप में बदलना चाहते हैं तो आप इसे अपने व्यू कंट्रोलर प्रतिनिधि में बटन की आईबीएक्शन विधि के अंदर आज़मा सकते हैं। यह एक वॉयस चैट चालू और बंद टॉगल करता है। वॉयस चैट सेट अप करना यहां शामिल नहीं है!

- (IBAction)startChat:(id)sender { 
UIButton *chatButton = (UIButton*)sender; 
if (!voiceChat.active) { 
    UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat" 
                    message:@"Voice Chat will become live. Please be careful with feedback if your friend is nearby." 
                  preferredStyle:UIAlertControllerStyleAlert]; 
    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 
                  handler:^(UIAlertAction * action) {}]; 
    [alert addAction:defaultAction]; 
    [self presentViewController:alert animated:YES completion:nil]; 
    [voiceChat start]; 
    voiceChat.active = YES; 
    [chatButton setTitle:@"Stop Chat" forState:UIControlStateNormal]; 
} 
else { 
    [voiceChat stop]; 
    UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat" 
                    message:@"Voice Chat is closed" 
                  preferredStyle:UIAlertControllerStyleAlert]; 
    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 
                  handler:^(UIAlertAction * action) {}]; 

    [alert addAction:defaultAction]; 
    [self presentViewController:alert animated:YES completion:nil]; 
    voiceChat.active = NO; 
    [chatButton setTitle:@"Chat" forState:UIControlStateNormal]; 
} 

}

वॉयस चैट निश्चित रूप से चैट आवाज के लिए विशिष्ट है, लेकिन आप स्विच को नियंत्रित करने के लिए अपने ow स्थानीय बूलियन संपत्ति का उपयोग कर सकते हैं।

2

स्विफ्ट 3 में, आप बस से एक बटन के शीर्षक बदल सकते हैं:

button.setTitle("Title", for: .normal) 

और आपके द्वारा बटन अक्षम:

button.isEnabled = false 

.normalUIControlState.normal क्योंकि प्रकार है के रूप में ही है अनुमानित।

+0

यदि हम एक एक्शन बटन हैं तो हमें क्या उपयोग करना चाहिए? –