12

Mi piacerebbe essere in grado di impaginare il mio controller di visualizzazione nel codice, ma vedere il layout visualizzato nel generatore di interfacce.IBDesignable UIViewController

So che posso creare una sottoclasse UIView, renderlo IBDesignable e assegnarlo alla vista del controller di visualizzazione, ma ciò richiederebbe che io crei tutte le altre proprietà di sottoview di questa sottoclasse di UIView invece delle proprietà del controller di visualizzazione.

Il vero desiderio è poter disporre i miei controller di vista in codice, ma vedere rapidamente eventuali modifiche senza ricostruire il progetto. Se questo è possibile con i campi da gioco, una risposta che descrive come farlo sarebbe anche apprezzata.

Grazie per eventuali suggerimenti.

risposta

1

Ho trovato una soluzione alternativa per testare il layout del controller di visualizzazione utilizzando IBDesignable.

1.Layout vostro controller della vista nel codice proprio come si farebbe normalmente

2.Creare una sottoclasse UIView IBDesignable e aggiungere vista del controller vista come una visualizzazione secondaria.

3.Creare un XI ter e impostare la classe del suo punto di vista alla sottoclasse creato nel passaggio 2

di approfondire la fase 2, initWithFrame del IBDesignable: metodo può sembrare

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

Quindi, oltre questo metodo initWithFrame, tutto il codice del layout può essere gestito dal controller della vista. Puoi passare i dati al tuo controller di visualizzazione nel metodo prepareForInterfaceBuilder della tua sottoview.

0

Per impaginare le proprie classi in Xcode è necessario prima importarle nel proprio parco giochi: here ulteriori informazioni.

Dopo averlo fatto, è arrivata la parte "difficile". Al fine di rendere il vostro modo di classe debuggable e visibile nel parco giochi, la classe deve essere conforme al protocollo: CustomPlaygroundQuickLooacable:

Qui c'è un rapido esempio dal WWDC:

Con l'implementazione di questo protocollo , stai praticamente dicendo a un parco giochi come rappresentare la tua classe. Non mi piace ancora una soluzione migliore.

Problemi correlati