2015-03-25 15 views
12

Hem IBInspectable hem de IBDesignable kullanan bir UIView alt sınıfı yazıyorum. Alışılmadık bir şey yapmıyorum, ancak alt sınıfım Xcode 6.2'nin projeyi sonsuza kadar yeniden oluşturmasına neden oluyor. Müfettiş odağı kaybettiğinde,IBDesignable görünümü sonsuz yeniden oluşturmaya neden oluyor

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

Her zaman inşa yeniden başlar: My Identity Müfettiş başlığı 'Designables' başlığı altında bu durum salınım gösterir. Bu, IB'den herhangi bir şeyi düzenlemeyi zorlaştırır, bu da bu dersin ilk amacını yazma amacını yitirir. Sabit yeniden canlanmasını engellemek için kodumu veya Xcode ayarlarını değiştirmek için herhangi bir yolu

import UIKit 
@IBDesignable class DesignableTestView: UIView { 

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

var mı: İşte

benim DesignableTestView uygulanmasıdır?

cevap

14

Bu tasarlanabilir görünüm sınıfının mevcut hedefin bir parçası olup olmadığını merak ediyorum. Live Views gösterisinde WWDC 2014 video What's New in Interface Builder'da, ilk adımın, tasarlanabilir sınıfın ayrı bir özel çerçeve hedefinde olmasını sağlamak olduğunu açıklıyorlar. Bu video, bu özel çerçeve hedefini proje içinde oluşturma sürecini göstermektedir. Bu sorun olmazsa

. Projenizi ("Ürün" menüsündeki "Temiz") temizlemenizi ve IB'de kendi başına bir şey yapmaya çalışmadan önce, emin olmak için yalnızca özel çerçeve hedefini yeniden oluşturmanızı öneririz. Alt satırda, çerçevenin olaysız şekilde oluşturulabildiğinden emin olun. Eğer problem bunu yaptıktan sonra hala devam ederse, onu bir sonraki seviyeye götürürüm ve (a) Xcode türetilmiş veri klasörünü bulabilirim; (b) Xcode'dan çıkmak; (c) türetilmiş veri klasörünü temizleyin, (d) Xcode'u yeniden başlatın ve (e) çerçeve hedefini tekrar oluşturmaya çalışın.

+0

Tasarım öğeleri neden ayrı bir çerçevede olmalıdır? – orkenstein

+1

Açıkça nedenini söylemediler, ancak giriş WWDC videosunda Apple, bunun yapılması gerektiği konusunda açıktı. Bunun pragmatik amaçlar için olduğundan şüpheleniyorum (IB'de koşmak için hedef oluşturmak zorundadır ve ana hedefinizin durumu kurulabilir ve/veya sadece IB kullanımı için çok pahalı olmayabilir). Deneysel olarak test ettim ve hedefin ne olduğuna bakılmaksızın çalışıyor gibi görünüyor, ancak Apple ayrı bir hedef önerdi. – Rob

+0

Bu, oluşturma zamanı ve sorunları nedeniyle gerekli olabilir. Artık sonsuz bir şekilde yeniden inşa edilen storyboard ile sıkıştım. Birden fazla hedefi olduğundan şüpheleniyorum. Daha detaylı IB Builder çıktıları harika olurdu. – orkenstein

4

IBDesignable sınıflarımı ayrı bir çerçeveye taşıdıktan sonra bile (Xcode 8.3.3'te) bu sorunu yaşıyorum. Benim için işe yarayan sorun, Xib dosyasını açmaktı, Editörü> Otomatik Olarak Yenileme Görünümlerini işaretini kaldırın ve Xcode'u yeniden başlatın.

+0

Benim için çalışıyor –

İlgili konular