2016-03-18 37 views
6

Tôi đã tò mò về cách tạo một lớp tùy chỉnh cho một phần tử giao diện người dùng (ví dụ, một nút)?Tùy chỉnh lớp UIButton swift

Tôi đã đọc tài liệu phát triển của Apple và tôi làm theo hướng dẫn, những gì tôi nghĩ là tạo một tệp lớp UIButton riêng biệt và liên kết tệp lớp đó cho tất cả các nút trên bảng phân cảnh.

Dưới đây là mã lớp UIButton riêng biệt (file có tên buttonz.swift):

import UIKit 

public class buttonz: UIButton { 


    required public init?(coder aDecoder: NSCoder) { 

     super.init(coder: aDecoder) 

     self.layer.borderWidth = 1 
     self.backgroundColor = UIColor.whiteColor() 
     self.layer.borderColor = UIColor.blackColor().CGColor 

    } 

} 

Và trên kịch bản, tôi liên kết nút đó cụ thể cho các lớp UIButton mới:

enter image description here

Vấn đề là khi tôi chạy trình mô phỏng, nó cho tôi lỗi trong bảng điều khiển debig:

lớp này không phải là khóa mã hóa tuân thủ giá trị cho khóa aButton

Tôi nghĩ quy trình này đơn giản trong hướng dẫn nhưng tôi có thiếu thêm bất kỳ bước nào không? Xin vui lòng cho tôi biết, cảm ơn!

Để tham khảo, đây là liên kết tới tài liệu Apple mà tôi đã sử dụng làm hướng dẫn.

https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson5.html

Sửa 1 - Đây là liên kết hành động cho viewcontroller.swift cho bộ điều khiển xem. Tôi chỉ ctrl + kéo nút từ bảng câu chuyện vào viewcontroller.swift.

@IBAction func a(sender: AnyObject) { 
     var alertView = UIAlertView(); 
     alertView.addButtonWithTitle("Ok"); 
     alertView.title = "title"; 
     alertView.message = "message"; 
     alertView.show(); 
    } 
+0

Bạn đã cố gắng hooking lên một lối thoát để một lớp học trong xây dựng giao diện và gọi nó 'aButton', tuy nhiên lớp bạn đã thử móc nó lên để không có tài sản đó. – nhgrif

+0

bạn có tạo một lớp điều khiển tùy chỉnh với thuộc tính 'aButton' không? bạn sẽ cần phải thiết lập lớp điều khiển xem của bạn quá tôi nghĩ. – nielsbot

+0

cố gắng loại bỏ công cụ sửa đổi 'công khai'. –

Trả lời

3

Mã của bạn có vẻ ổn, tôi nghĩ đó là lỗi kết nối. Mở tệp bảng phân cảnh của bạn, chọn File's Owner (hoặc vòng tròn màu vàng trên đầu bộ điều khiển chế độ xem) và nhấp vào "Trình kiểm tra kết nối" (mũi tên ở trên cùng bên phải, bên cạnh thanh tra kích thước) để xem tất cả các cửa hàng một lần. Tìm kiếm ! s cho biết ổ cắm bị thiếu.

Nếu bạn đang tạo UIClasses tùy chỉnh, tôi khuyên bạn nên xem IBInspectable s và IBDesignable s, có rất nhiều về chúng và cho phép bạn thực hiện một chút thông qua bảng phân cảnh và không thay đổi mã tất cả những gì nhiều.

Một số bài viết:

IBInspectable/IBDesignable - NSHipster

Creating a Custom View That Renders in Interface Builder - Apple

Enjoy :)

+0

Vì vậy, tôi đã thực hiện một crtl + kéo của cùng một nút vào mã của viewcontroller như là một ổ cắm và nó có vẻ tốt sau khi phát hiện rằng aButton đã thiếu một ổ cắm, cảm ơn! – rj2700

+0

Rực rỡ! Chúc may mắn với tất cả. Hãy nhìn vào IBDesignables, chúng khá tuyệt. – MrHaze

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