2015-09-30 17 views
8

Jestem nowy w rozwoju iOS. Używam szybkiego i chcę programować swoje poglądy programowo, ale chciałbym użyć IBDesigner i IBInspectable, aby przyspieszyć mój proces projektowania.Korzystanie z IBDesignable i IBInspectable z UIViewController

Teraz mam kontroler widoku z różnymi przyciskami i etykietami na nim. Oto fragment mojego kodu:

@IBDesignable class LandingView: UIViewController, LandingViewProtocol { 

    @IBInspectable lazy var backButton: UIButton = { 
     var button = UIButton() 
     button.backgroundColor = Styles.BUTTON_COLOR 
     return button 
    }() 
    @IBInspectable lazy var caption: UILabel = UILabel() 
} 

teraz moje pytanie jest w jaki sposób korzystać z narzędzia do tworzenia interfejsu z IBDesignable i IBInspectable? Czy muszę dodać plik .xib? Widziałem kilka innych pytań, mówiących, że muszę korzystać z placu zabaw, ale starałem się tego uniknąć, w zasadzie chciałem się dowiedzieć, czy możliwe jest obejrzenie mojego całego kontrolera view?

Dziękuję

+0

@IBInspectable Tutorial: https://iosdevcenters.blogspot.com/2017/07/how-to-use-ibinspectable-in-swift-30.html –

Odpowiedz

3

Istnieje obejście przetestować układ widok kontrolera używając IBDesignable.

  1. Układ kontroler widoku w kodzie tak jak zrobiłbyś normalnie
  2. Utwórz podklasę IBDesignable UIView i dodać widok kontrolera widoku jako podrzędny.
  3. Tworzenie XIb i wybrać klasę swoje stanowisko do utworzonego w kroku 2

Wypracowanie na etapie 2 podklasy, twój IBDesignable za initWithFrame: metoda może wyglądać

- (instancetype)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    MyViewController *viewController = [MyViewController alloc] init]; 
    viewController.view.frame = self.bounds; 
    [self addSubview:viewController.view]; 
    return self; 
} 

So poza tym Metoda initWithFrame, cały kod układu może być obsługiwany przez kontroler widoku. Możesz przesłać dane do kontrolera widoku w metodzie prepareForInterfaceBuilder twojego podglądu.

+0

Jeśli dodajesz UIView do UIViewController, tracisz cykl życia ViewController, taki jak viewWill i DidAppear. Czy to nie przesada? – OhadM

3

Nie można używać IBDesignable z inną klasą, która nie dziedziczy z UIView lub NSView. Sprawdź wytyczną przez firmę Apple o IBDesignable:

Można korzystać z dwóch różnych attributes- @ IBDesignable i @ IBInspectable-umożliwić żywo, interaktywny projekt niestandardowy widok w interfejsu Builder. Po utworzeniu widoku niestandardowego, która dziedziczy klasy UIView lub klasy NSView, można dodać @IBDesignable atrybut tuż przed deklaracji klasy

Źródło: Live Rendering

Powiązane problemy