iOS में बटन और अक्षम बटन का टेक्स्ट बदलें


106

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

जवाबों:


208

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

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

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

- (IBAction) triggerActionWithSender: (id) sender;

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

@property(retain) IBOutlet UIButton *someButton;

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


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

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

21
[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];

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

18

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

myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text

प्रलेखन: IsEnabled , setTitle

पुराना कोड:

myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text

'setTitle ( : forState :)' का नाम बदलकर 'setTitle ( : for :)'
Lavi Avigdor

10

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

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

के लिए प्रलेखन देखें UIButton


3

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

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

अक्षम करने के लिए:

[mybtn setEnabled:NO];

3

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

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

और आप बटन को निष्क्रिय कर दें:

button.isEnabled = false

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


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

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];
}

}

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


0

विस्तार के साथ स्विफ्ट 4

सेट:

// set button label for all states
extension UIButton {
    public func setAllStatesTitle(_ newTitle: String){
        self.setTitle(newTitle, for: .normal)
        self.setTitle(newTitle, for: .selected)
        self.setTitle(newTitle, for: .disabled)
    }
}

और उपयोग करें:

yourBtn.setAllStatesTitle("btn title")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.