2014-10-12 20 views
150

Câu hỏi đơn giản tại đây. Tôi có UIButton, currencySelector và tôi muốn thay đổi văn bản theo chương trình. Dưới đây là những gì tôi có:Thay đổi văn bản của UIButton nhanh chóng lập trình

currencySelector.text = "foobar" 

Xcode cho tôi lỗi "Tuyên bố dự kiến". Tôi đang làm gì sai và làm cách nào để thay đổi văn bản của nút?

Trả lời

414

Trong Swift 3:

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

Nếu không:

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

Bạn có thể bỏ qua 'UIControlState'. ví dụ. 'forState: .Normal' – funroll

+6

Swift3 bây giờ là' .normal' lưu ý trường hợp thấp hơn – Matthew

+2

Thay đổi Swift3 'forState' thành' for' –

56

Chỉ cần làm rõ cho những người mới đến SwiftiOS lập trình. Bên dưới dòng mã:

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

chỉ áp dụng cho IBOutlets, không IBActions. Vì vậy, nếu ứng dụng của bạn đang sử dụng nút làm chức năng để thực thi một số mã, hãy nói nhạc và bạn muốn thay đổi tiêu đề từ Play thành Pause dựa trên biến chuyển đổi, bạn cũng cần tạo IBOutlet cho nút đó.

Nếu bạn cố gắng sử dụng button.setTitle đối với số IBAction bạn sẽ gặp lỗi. Rõ ràng của nó một khi bạn biết nó, nhưng đối với noobs (tất cả chúng ta đều) đây là một mẹo hữu ích.

+1

Đúng, Tôi đã về google chính xác điều này cho đến khi tôi nhìn thấy câu trả lời của bạn. Cảm ơn! +1 – Evernoob

+1

Đây là một mẫu trong IOS khiến tôi mất một thời gian để khám phá. Có các thuộc tính của các mục UI mà bạn không có quyền truy cập trừ khi một IBOutlet được tạo ra. Nếu bao giờ bạn đang cố gắng thay đổi một thuộc tính của một giao diện người dùng và không thể truy cập nó, hãy đảm bảo rằng bạn có cả IBAction đang chạy một số mã và IBOutlet cung cấp quyền truy cập vào các thuộc tính. – Bendrix

+5

Câu trả lời này không có ý nghĩa. 'Người gửi' của hành động sẽ là nút. Bạn có thể áp dụng bất cứ điều gì bạn muốn cho 'người gửi'. Bạn không cần một lối thoát để làm điều này. – rmaddy

3

Swift 3:

nút Set title:

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

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

Swift 3

Khi bạn thực hiện các @IBAction:

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

này đặt người gửi như UIButton (thay vì của Bất kỳ) để nó nhắm mục tiêu btnAction dưới dạng UIButton

.210
4

Swift 3,0

// Standard State 
myButton.setTitle("Title", for: .normal) 
0

Swift 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) 
Các vấn đề liên quan