2014-10-13 7 views
8

Po raz pierwszy korzystam z storyboardów w systemie iOS 8 i do tej pory uwielbiam aspekt renderowania na żywo w scenorysie. Jednak wydaje mi się, że udało mi się uzyskać poprawne renderowanie moich widoków na scenorysie.Live Render IBOutlet Połączone subviews za pośrednictwem IBInspectable Properties

mam pojemnik UIView który zawiera połączenia do UILabel w serii ujęć, ja próbuje ustawić tekst etykiety na podstawie atrybutu IBInspectable na etykiecie widoku kontenera nadrzędnego.

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

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

    /* Init functions */ 

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

Jeżeli ustawić atrybut w serii ujęć, to czyni zgodnie z oczekiwaniami, podczas gdy program jest wykonywany, ale nie udzieli w serii ujęć, jak bym się spodziewał. Sprawdziłem swoje połączenia i wszystko wydaje się być poprawnie podłączone.

Moje pytanie brzmi: czy można wpływać na zawartość widoku połączonego z IBO za pośrednictwem atrybutów IBInspectable i czy można je wyświetlać na scenorysie, a jeśli tak, to czego mi brakuje lub robię źle?

+0

Wiem, że wszystkie wyloty są zerowe, gdy jest wywoływana funkcja prepareForInterfaceBuilder. Jestem pewien, że jest to duży powód, dla którego renderowanie na żywo nie jest propagowane, ale nie jestem pewien, czy jest gdziekolwiek indziej mogę zadeklarować zachowanie, które chcę, aby to pokazać w Generatorze interfejsów. –

Odpowiedz

10

Niestety nie można zobaczyć obiektów IBOutlet w programie budującym interfejs dla niestandardowych widoków oznaczonych jako IBDesignable. Jeśli chcesz widzieć swoje sklepy internetowe w narzędziu do budowania interfejsów, musisz użyć zmiennych regularnych zamiast IBOutlet i musisz programowo tworzyć obiekty.

Należy również pamiętać, że jeśli musisz zmienić coś z budowniczego interfejsu dla swoich obiektów, musisz zdefiniować swoje właściwości jako IBInspectable. Obecnie następujące typy zmiennych są ważne dla IBInspectable:

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

Mam nadzieję, że ta odpowiedź jest wystarczająco jasne dla ciebie.

Edit: znalazłem następujący artykuł, który opisuje sposób, jak to zrobić, co trzeba:

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

2-te Edit: Próbowałem artykuł i to działa. Teraz widzę swoje gniazda na budowle interfejsu

+0

Tak właśnie myślałem, ale chciałem uzyskać potwierdzenie. Próbowałem zachować cały układ UI w scenorysach, ale myślę, że w tej chwili nie jest to możliwe. Dzięki za odpowiedzi. –

+0

Linki nie są odpowiedziami. –

Powiązane problemy