2015-03-25 11 views
12

Tôi đang viết một lớp con UIView sử dụng cả IBInspectable và IBDesignable. Tôi không làm bất cứ điều gì bất thường, nhưng phân lớp của tôi gây ra Xcode 6.2 để không ngừng xây dựng lại dự án. Nhận dạng Inspector của tôi cho thấy dao động này nhà nước dưới tiêu đề 'Designables':Chế độ xem có thể thiết kế lại của IB khiến cho việc xây dựng lại bất tận

'Designables' state oscillating between 'Updating' and 'Up to date'

Mỗi lần khởi động lại xây dựng, thanh tra mất tập trung. Điều này gây khó khăn cho việc chỉnh sửa bất kỳ thứ gì từ IB, điều này đánh bại mục đích viết lớp này ngay từ đầu.

Đây là việc thực hiện DesignableTestView tôi:

import UIKit 
@IBDesignable class DesignableTestView: UIView { 

    @IBInspectable var testBackground:UIColor? { 
     didSet { 
      if testBackground != nil { 
       self.backgroundColor = testBackground 
      } 
     } 
    } 
} 

Có cách nào để thay đổi mã hoặc cài đặt của Xcode của tôi để ngăn chặn việc xây dựng lại liên tục?

Trả lời

14

Tôi tự hỏi liệu lớp chế độ xem có thể thiết kế này là một phần của mục tiêu hiện tại hay không. Trong video WWDC 2014 What's New in Interface Builder, trong bản trình diễn Lượt xem trực tiếp, họ mô tả bước đầu tiên là đảm bảo rằng lớp có thể thiết kế nằm trong một mục tiêu khung tùy chỉnh riêng biệt. Video đó thể hiện quá trình tạo mục tiêu khung tùy chỉnh này trong dự án.

Nếu đó không phải là vấn đề. Tôi muốn đề nghị làm sạch dự án của bạn ("Sạch" trên menu "Sản phẩm") và xây dựng lại chỉ mục tiêu khung tùy chỉnh để đảm bảo rằng điều đó là ổn trước khi bạn thử làm bất cứ điều gì trong IB, chính nó. Điểm mấu chốt, hãy chắc chắn rằng khuôn khổ có thể được xây dựng mà không có sự cố. Nếu sự cố vẫn tiếp diễn sau khi thực hiện điều đó, tôi sẽ chuyển sang cấp độ tiếp theo và (a) tìm thư mục dữ liệu có nguồn gốc Xcode; (b) bỏ Xcode; (c) xóa thư mục dữ liệu có nguồn gốc, (d) khởi động lại Xcode, và (e) cố gắng xây dựng lại mục tiêu khung công tác.

+0

Tại sao thiết kế có thể ở trong khung riêng biệt? – orkenstein

+1

Họ không rõ ràng lý do tại sao, nhưng trong video giới thiệu WWDC, Apple đã rõ ràng về sự cần thiết phải làm như vậy. Tôi nghi ngờ rằng đó là mục đích thực dụng (nó phải xây dựng mục tiêu để chạy trong IB, và trạng thái của mục tiêu chính của bạn có thể không được xây dựng và/hoặc có thể quá đắt đối với việc sử dụng IB). Thử nghiệm, tôi đã thử nghiệm nó và nó dường như hoạt động bất kể mục tiêu của nó là gì, nhưng Apple khuyên một mục tiêu riêng biệt. – Rob

+0

Điều đó có thể được yêu cầu, vì thời gian xây dựng và các vấn đề đúng. Bây giờ tôi bị mắc kẹt với việc xây dựng lại storyboard không ngừng. Tôi nghi ngờ nhiều mục tiêu là vấn đề. Đầu ra của Trình tạo IB chi tiết hơn sẽ rất tuyệt vời. – orkenstein

4

Tôi vẫn gặp sự cố này (trong Xcode 8.3.3) ngay cả sau khi chuyển các lớp IBDesignable thành một khung riêng biệt. Điều gì làm việc cho tôi là mở tệp Xib vi phạm, bỏ chọn Trình chỉnh sửa> Tự động làm mới Chế độ xem và sau đó khởi động lại Xcode.

+0

Nó hoạt động cho tôi –

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