Domanda

Ho creato una sottoclasse UIView e corrispondente file XI ter dove sono disposte alcune UILabels e UIImageViews. Voglio poi mettere più copie di questo UIView personalizzato in un UIViewController.

Quando faccio da apparire vuoto nel costruttore di interfaccia e non vengono visualizzati quando i carichi di app. Quali sono i metodi ho bisogno per implementare l'UIView sottoclasse per fare questo lavoro?

È stato utile?

Soluzione

Il metodo più semplice è di gran lunga per creare un pennino con il proprietario set di file per NSObject, contenente una vista contenente il vostro elemento di layout.

Poi

NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];
UIView *fv = [[arr objectAtIndex:0] retain];

// now you have the view, do something with it:
fv.center = CGPointMake(100,100);
[self.view addSubview:fv];

Non c'è bisogno di fare qualsiasi cosa con il proprietario del file; è anche impostato a zero qui.

Altri suggerimenti

Questo è simile all'utilizzo di un file nib per creare celle di vista tabella. Qui è una pagina che discute come fare.

Avrete bisogno di mettere una presa nella sottoclasse UIViewController per la visualizzazione personalizzata, e impostare la sottoclasse UIViewController come il "Manuale di file" nella visualizzazione personalizzata pennino del file (.xib). Quindi collegare l'uscita si è creato alla vista oggetto di livello superiore (di nuovo nel file pennino visualizzazione personalizzata).

Poi ogni volta che si desidera creare un'istanza di visualizzazione personalizzata nel codice controller della vista, chiamata:

[[NSBundle mainBundle] loadNibNamed:<custom view nib name> owner:self options:nil];

La presa si è aggiunto sarà quindi impostato a punto una nuova istanza di visualizzazione personalizzata.

L'unico lato negativo di questo approccio è che si dovrà tracciare le istanze di visualizzazione personalizzata nel vostro controller di vista programmatico, piuttosto che graficamente in Interface Builder.

Un altro approccio creerebbe le etichette e le immagini put programmaticamente nella sottoclasse UIView, e quindi è possibile aggiungerlo a Interface Builder, come si farebbe con qualsiasi altra sottoclasse UIView.

Modifica :. Purtroppo in Xcode 4.0, questa funzionalità è stata rimossa

Una volta che avete la vostra visualizzazione secondaria configurato in Interface Builder, è possibile creare un nuovo gruppo (utilizzare il pulsante COG nella parte inferiore della finestra della biblioteca) e trascinare l'oggetto sottoclasse (che contiene le immagini ed etichette) dalla vista elenco (ad esempio non la vista layout) di nuovo alla finestra della libreria.

È possibile quindi graficamente aggiungere più istanze di vostra vista sottoclasse a qualsiasi vista del costruttore interfaccia o finestra come si farebbe con il built-in oggetti nella libreria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top