UIButton के पाठ को प्रोग्रामिक रूप से तेजी से बदलना


222

यहाँ सरल प्रश्न। मेरे पास एक UIButton है, मुद्रास्क्रिप्टर है, और मैं प्रोग्राम को पाठ को बदलना चाहता हूं। यहाँ मेरे पास क्या है:

currencySelector.text = "foobar"

Xcode मुझे "अपेक्षित घोषणा" त्रुटि देता है। मैं क्या गलत कर रहा हूं, और मैं बटन का पाठ कैसे बदल सकता हूं?

जवाबों:


595

स्विफ्ट 3, 4, 5 में:

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

अन्यथा:

button.setTitle("Button Title", forState: UIControlState.Normal)

इसके @IBOutletलिए भी घोषणा करनी होगी button


32
आप छोड़ सकते हैं UIControlState। जैसेforState: .Normal
१roll

11
स्विफ्ट 3 अब .normalनिचले मामले को ध्यान में रखता है
मैथ्यू

6
Swift3 परिवर्तन forStateकरने के लिएfor
मैथ्यू पी जोन्स

1
Swift3: self.btnBuy.setTitle ("खरीदें", इसके लिए: UIControlState.normal)
तिरु

5
स्विफ्ट 4 के लिए भी button.setTitle("Button Title",for: .normal)काम कर रहे हैं! धन्यवाद
रक्षिता मुरंगा रोड्रिगो

74

स्विफ्ट और आईओएस प्रोग्रामिंग के लिए उन नए लोगों के लिए बस एक स्पष्टीकरण । कोड की रेखा के नीचे:

button.setTitle("myTitle", forState: UIControlState.Normal)

केवल पर लागू होता है IBOutlets, नहीं IBActions

तो, अपने अनुप्रयोग एक समारोह के रूप में एक बटन का उपयोग कर रहा है, तो कुछ कोड निष्पादित करने के लिए, संगीत कहते हैं, और आप से शीर्षक बदलना चाहते हैं Playके लिए Pauseएक टॉगल चर के आधार पर, आप भी एक बनाने की जरूरत IBOutletहै कि बटन के लिए।

यदि आप button.setTitleएक के खिलाफ उपयोग करने का प्रयास करते हैं तो आपको IBActionएक त्रुटि मिलेगी। यह स्पष्ट है कि एक बार आप इसे जान लेंगे, लेकिन नॉब्स के लिए (हम सभी थे) यह एक सहायक टिप है।


1
हां, जब तक मैं आपका जवाब नहीं देख लेता, मैं ठीक उसी तरह से Google पर आने वाला था। धन्यवाद! +1
एवरनोब

1
यह आईओएस में एक पैटर्न है जिसने मुझे खोज करने में थोड़ा समय लिया। यूआई आइटम की विशेषताएं हैं, जब तक कि IBOutlet नहीं बनाया जाता है तब तक आपके पास कोई पहुंच नहीं है। यदि कभी आप UI की विशेषता को बदलने का प्रयास कर रहे हैं और इसे एक्सेस नहीं कर सकते हैं, तो सुनिश्चित करें कि आपके पास IBAction है जो कुछ कोड चला रहा है, और IBOutlet जो विशेषताओं तक पहुंच प्रदान करता है।
बेंड्रिक्स

8
इस जवाब का कोई मतलब नहीं है। senderकार्रवाई का बटन होगा। आप अपनी इच्छानुसार कुछ भी लगा सकते हैं sender। ऐसा करने के लिए आपको किसी आउटलेट की आवश्यकता नहीं है।
रामप्यारी

2
न तो बेंडिक्स का जवाब और न ही उनकी टिप्पणी सही है। वे सीधे गलत हैं।
वाइकिंगोजगुंडो

प्रश्न इंटरफ़ेस बिल्डर का उल्लेख करने के लिए इतना गलत नहीं है कि मामला है।
एडवर्ड

13

स्विफ्ट 5:

    let controlStates: Array<UIControl.State> = [.normal, .highlighted, .disabled, .selected, .focused, .application, .reserved]
    for controlState in controlStates {
        button.setTitle(NSLocalizedString("Title", comment: ""), for: controlState)
    }

1
मुझे UIControl.State का उपयोग करना था। इसमें कहा गया है कि UIControlState को हटा दिया गया था
HokiEJP

9

स्विफ्ट 3:

बटन शीर्षक सेट करें:

//for normal state:
my_btn.setTitle("Button Title", for: .normal)

// For highlighted state:
my_btn.setTitle("Button Title2", for: .highlighted)


6

शीर्षक बदलने पर जब आरोप लगाया जाता है तो यह थोड़ा अलग होता है:

मैं बस एक समस्या में भाग गया: यदि आपके पास एक यूआईट्यूटन है जिसमें एक शीर्षक शीर्षक है, तो आपको उपयोग करना होगा:

my_btn.setAttributedTitle(NSAttributedString(string: my_title), for: my_state)

के रूप में, Apple SetTitle डॉक्टर के अनुसार :

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

मेरे पास एक शीर्षक शीर्षक था और मैंने बिना किसी प्रभाव के उस पर सेट करने का प्रयास किया ...


3

स्विफ्ट 3

जब आप @IBAction बनाते हैं:

@IBAction func btnAction(_ sender: UIButton) {
  sender.setTitle("string goes here", for: .normal)
}

यह प्रेषक को UIButton (किसी के बजाय) के रूप में सेट करता है, इसलिए यह UIButton के रूप में btnAction को लक्षित करता है


2

तेजी से 4.2 और ऊपर

बटन के IBOutlet का उपयोग करना

btnOutlet.setTitle("New Title", for: .normal)

बटन के IBAction का उपयोग करना

@IBAction func btnAction(_ sender: UIButton) {
  sender.setTitle("New Title", for: .normal)
}

0

स्विफ्ट 3

let button: UIButton = UIButton()
button.frame = CGRect.init(x: view.frame.width/2, y: view.frame.height/2, width: 100, height: 100)
button.setTitle(Title Button, for: .normal)

0

स्विफ्ट का उपयोग करके Xcode में एक बटन के लिए एक शीर्षक सेट करने के लिए - 04: पहले एक विधि बनाएं जिसका नाम पैरामीटर टाइटल है और नीचे जैसे UIController राज्य;

func setTitle(_ title : String?, for state : UIControl.State)   {

}

और अपने बटन एक्शन विधि में इस विधि को याद रखें;

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