2014-10-13 33 views
8

Tôi đang sử dụng bảng phân cảnh lần đầu tiên trong iOS 8 và cho đến nay đã yêu thích khía cạnh hiển thị trực tiếp của mọi thứ trên bảng phân cảnh. Tuy nhiên, tôi dường như đã đánh một cái bẫy trong việc có được quan điểm của tôi để hiển thị đúng trên bảng phân cảnh.Live Render IBOutlet Connected Subviews Qua IBInspectable Properties

Tôi có một container UIView có chứa một kết nối đến một UILabel trên kịch bản, tôi đang cố gắng để thiết lập văn bản của nhãn dựa trên một IBInspectable thuộc tính trên quan điểm chứa mẹ của của nhãn.

@IBDesignable class ContainerView : UIView { 
    @IBOutlet weak var : titleLabel : UILabel! 

    @IBInspectable var title : String = "" { 
     didSet { 
      titleLabel?.text = title 
     } 
    } 

    /* Init functions */ 

    prepareForInterfaceBuilder() { 
     self.titleLabel?.text = title 
    } 
} 

Nếu tôi đặt thuộc tính trong bảng phân cảnh nó hiển thị như mong đợi trong khi chương trình đang thực thi nhưng không hiển thị trong bảng phân cảnh như tôi mong đợi. Tôi đã kiểm tra các kết nối của tôi và mọi thứ dường như được nối đúng cách.

Câu hỏi của tôi là: Có thể ảnh hưởng đến nội dung của chế độ xem kết nối IBOutlet thông qua các thuộc tính IBInspectable và hiển thị trực tiếp trên bảng phân cảnh hay không, và nếu có, tôi đang thiếu hoặc làm gì sai?

+0

Tôi biết rằng tất cả các cửa hàng là không khi chuẩn bịForInterfaceBuilder được gọi. Tôi chắc chắn đó là một lý do lớn tại sao dựng hình trực tiếp không được thúc đẩy, nhưng tôi không chắc liệu có bất kỳ nơi nào khác mà tôi có thể tuyên bố hành vi mà tôi muốn để hiển thị nó trong Trình tạo giao diện hay không. –

Trả lời

10

Rất tiếc, bạn không thể thấy các đối tượng trong trình tạo giao diện cho các chế độ xem tùy chỉnh được đánh dấu là IBDesignable. Nếu bạn muốn xem các cửa hàng của mình trong trình tạo giao diện, bạn phải sử dụng các biến thông thường thay vì IBOutlet và bạn phải tạo các đối tượng của mình theo chương trình.

Cũng xin lưu ý rằng, nếu bạn cần thay đổi thứ gì đó từ trình tạo giao diện cho đối tượng của mình, bạn phải xác định thuộc tính của mình là IBInspectable. Hiện nay biến sau loại có giá trị IBInspectable:

Bool, CGFloat, CGPoint, CGRect, CGSize, NSInteger, NSString, UIColor, UIImage

Tôi hy vọng câu trả lời này là đầy đủ rõ ràng cho bạn.

Edit: tôi thấy bài viết sau đây được mô tả một cách làm thế nào để làm những gì bạn cần:

http://justabeech.com/2014/07/27/xcode-6-live-rendering-from-nib/

2 Edit: tôi đã cố gắng bài viết và nó hoạt động. Bây giờ tôi có thể thấy các cửa hàng của tôi trên trình tạo giao diện

+0

Vâng đây là những gì tôi nghĩ, nhưng tôi muốn nhận được xác nhận. Tôi đã cố giữ tất cả thiết kế giao diện người dùng của mình trong bảng phân cảnh, nhưng tôi đoán rằng điều đó không thể thực hiện tại thời điểm này. Cảm ơn vì sự trả lời. –

+0

Liên kết không phải là câu trả lời. –