2015-01-04 27 views
9

Tôi đang cố gắng lấy văn bản của nút để thay đổi màu phông chữ thành màu đỏ khi nhấn vào. Tôi đã xem các bài viết tương tự từ vài tháng trước và việc sử dụng mã đó gây ra lỗi xây dựng trong Xcode 6.1.1. Đây là mã Tôi đang cố gắng:Thay đổi màu văn bản của nút khi nhấn

class ViewController: UIViewController { 

    @IBAction func firstButton(sender: UIButton) { 
     firstButton.titleLabel.textColor = UIColor.redColor() 
    } 
} 

Mã lỗi mà tôi nhận được là:

'(UIButton) ->()' không có một thành viên có tên là 'titleLabel'

Bất kỳ trợ giúp sẽ được nhiều đánh giá cao như tôi thấy Swift như ân sủng cứu độ của tôi sau khi đã mất kiên nhẫn trong cố gắng tìm hiểu Objective C.

Trả lời

8

Bạn đang cố gắng thay đổi màu văn bản của hàm titleLabel, điều này không có ý nghĩa. Bạn nên truy cập thông số sender thay vào đó nếu bạn đang cố gắng tham chiếu đến nút để truy cập vào số titleLabel. Ngoài ra, như rakeshbs chỉ ra, titleLabel là thuộc tính tùy chọn của UIButton.

class ViewController: UIViewController { 

    @IBAction func firstButton(sender: UIButton) { 
     sender.titleLabel?.textColor = UIColor.redColor() 
    } 
} 

Nếu bạn chia nhỏ thông báo lỗi, bạn sẽ nhận thấy đây rõ ràng là vấn đề.

'(UIButton) ->()' không có một thành viên có tên là 'titleLabel'

nào nói rằng bạn đang cố gắng truy cập vào một thành viên (hoặc tài sản) có tên titleLabel trên một đối tượng của loại (UIButton) ->(), có nghĩa là một chức năng mà có một nút như đầu vào và trả về không có gì.

+0

Đó là vấn đề. Tôi đã không truy cập vào người gửi, tôi đã cố gắng truy cập vào nút thông qua tên của nó. Cảm ơn nhiều. –

2

UIButton.titlelabel là một tài sản không bắt buộc. Bạn phải sử dụng chuỗi tùy chọn để thay đổi các thuộc tính của nó.

firstButton.titleLabel?.backgroundColor = UIColor.redColor() 

Vui lòng đọc các tùy chọn nhanh để hiểu chi tiết này. http://www.appcoda.com/beginners-guide-optionals-swift/

14

Đối với bất cứ ai quan tâm đến mã nhanh chóng chính xác cần thiết để làm cho câu hỏi này công việc của tôi, ở đây là:

class ViewController: UIViewController { 

@IBAction func firstButton(sender: UIButton) { 

    sender.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal) 

} 
5

này sẽ làm việc cho Swift 3:

yourButton.setTitleColor (UIColor.blue, for: .normal)

Các vấn đề liên quan