คำถามง่ายๆที่นี่ ฉันมี UIButton, currencySelector และฉันต้องการเปลี่ยนข้อความโดยทางโปรแกรม นี่คือสิ่งที่ฉันมี:
currencySelector.text = "foobar"
Xcode ให้ข้อผิดพลาด "การประกาศที่คาดหวัง" ให้ฉัน ฉันทำอะไรผิดและฉันจะเปลี่ยนข้อความของปุ่มได้อย่างไร
คำถามง่ายๆที่นี่ ฉันมี UIButton, currencySelector และฉันต้องการเปลี่ยนข้อความโดยทางโปรแกรม นี่คือสิ่งที่ฉันมี:
currencySelector.text = "foobar"
Xcode ให้ข้อผิดพลาด "การประกาศที่คาดหวัง" ให้ฉัน ฉันทำอะไรผิดและฉันจะเปลี่ยนข้อความของปุ่มได้อย่างไร
คำตอบ:
ใน Swift 3, 4, 5:
button.setTitle("Button Title", for: .normal)
มิฉะนั้น:
button.setTitle("Button Title", forState: UIControlState.Normal)
ยังมีมีการประกาศสำหรับ@IBOutlet
button
.normal
ตัวพิมพ์เล็ก
forState
เป็นfor
button.setTitle("Button Title",for: .normal)
ใช้งานได้! ขอบคุณ
เพียงคำอธิบายสำหรับผู้ที่เพิ่งเริ่มต้นใช้งานSwiftและการเขียนโปรแกรมiOS บรรทัดด้านล่างของรหัส:
button.setTitle("myTitle", forState: UIControlState.Normal)
ใช้กับIBOutlets
ไม่ใช่IBActions
เท่านั้น
ดังนั้นหากแอปของคุณใช้ปุ่มเป็นฟังก์ชั่นในการเรียกใช้รหัสบางอย่างพูดเล่นเพลงและคุณต้องการเปลี่ยนชื่อจากPlay
เป็นPause
ตามตัวแปรสลับคุณต้องสร้างIBOutlet
ปุ่มขึ้นมาด้วย
ถ้าคุณลองใช้ button.setTitle
กับIBAction
ข้อผิดพลาดคุณจะได้รับข้อผิดพลาด มันชัดเจนเมื่อคุณรู้ แต่สำหรับ noobs (เราทุกคน) นี่เป็นคำแนะนำที่เป็นประโยชน์
sender
ของการกระทำที่จะเป็นปุ่ม sender
คุณสามารถใช้สิ่งที่คุณต้องการไป คุณไม่จำเป็นต้องมีเต้าเสียบเพื่อทำสิ่งนี้
let controlStates: Array<UIControl.State> = [.normal, .highlighted, .disabled, .selected, .focused, .application, .reserved]
for controlState in controlStates {
button.setTitle(NSLocalizedString("Title", comment: ""), for: controlState)
}
สวิฟท์ 3:
ตั้งชื่อปุ่ม:
//for normal state:
my_btn.setTitle("Button Title", for: .normal)
// For highlighted state:
my_btn.setTitle("Button Title2", for: .highlighted)
สวิฟท์ 5.0
// Standard State
myButton.setTitle("Title", for: .normal)
การเปลี่ยนชื่อเมื่อแสดงประกอบแตกต่างกันเล็กน้อย:
ฉันพบปัญหา: หากคุณมี UIButton ที่มี Title Attributed คุณต้องใช้:
my_btn.setAttributedTitle(NSAttributedString(string: my_title), for: my_state)
ตามที่Apple SetTitle Doc :
หากคุณตั้งค่าทั้งชื่อและชื่อเรื่องที่เกี่ยวข้องกับปุ่มปุ่มนั้นจะชอบการใช้ชื่อเรื่องที่มีเนื้อหามากกว่าชื่อนี้
ฉันมีชื่อเรื่องประกอบและพยายามตั้งชื่อเรื่องโดยไม่มีผล ...
สวิฟท์ 3
เมื่อคุณสร้าง @IBAction:
@IBAction func btnAction(_ sender: UIButton) {
sender.setTitle("string goes here", for: .normal)
}
สิ่งนี้ตั้งค่าผู้ส่งเป็น UIButton (แทน Any) ดังนั้นจึงกำหนดเป้าหมาย btnAction เป็น UIButton
swift 4.2 ขึ้นไป
ใช้ปุ่ม IBOutlet
btnOutlet.setTitle("New Title", for: .normal)
ใช้ IBAction ของปุ่ม
@IBAction func btnAction(_ sender: UIButton) {
sender.setTitle("New Title", for: .normal)
}
สวิฟท์ 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)
ในการตั้งชื่อสำหรับปุ่มใน Xcode โดยใช้ swift - 04: ก่อนอื่นให้สร้างวิธีที่เรียกว่า setTitle พร้อมชื่อพารามิเตอร์และสถานะ UIController ดังนี้
func setTitle(_ title : String?, for state : UIControl.State) {
}
และจำวิธีนี้ในวิธีการกระทำของปุ่มเช่น;
yourButtonName.setTitle("String", for: .state)
UIControlState
คุณสามารถละเว้น เช่นforState: .Normal