Voglio creare un componente riutilizzabile (un controllo personalizzato) per l'iPhone. Consiste di diversi controlli standard predisposti su una vista e quindi del codice associato. I miei obiettivi sono:iPhone: crea un componente riutilizzabile (controllo) con alcuni componenti di Interface Builder e un altro codice
- Desidero poter utilizzare Interface Builder per disporre le sottoview nel mio controllo personalizzato;
- Desidero in qualche modo impacchettare il tutto in modo tale da poter trascinare abbastanza facilmente il componente personalizzato risultante in altre viste, senza dover ricablare manualmente un sacco di prese e così via. (Un po 'di ricablaggio manuale va bene, io non ne voglio fare tonnellate e tonnellate.)
Lasciatemi essere più concreto, e dirti in modo specifico che cosa dovrebbe fare il mio controllo. Nella mia app, a volte ho bisogno di colpire un servizio web per convalidare i dati che l'utente ha inserito. In attesa di una risposta dal servizio web, voglio visualizzare uno spinner (un indicatore di attività). Se i servizi Web rispondono con un codice di successo, voglio visualizzare un segno di spunta "successo". Se il servizio Web risponde con un codice di errore, voglio visualizzare un'icona di errore e un messaggio di errore.
Il modo monouso per eseguire questa operazione è piuttosto semplice: creo solo un UIView che contiene UIActivityIndicatorView, due UIImages (uno per l'icona di successo e uno per l'icona di errore) e un UILabel per il messaggio di errore. Ecco uno screenshot, rispetto alle corrispondenti parti contrassegnate in rosso:
Ho quindi cablare i pezzi alle prese, e ho messo un po 'di codice nel mio controller.
Ma come posso impacchettare quei pezzi - il codice e la piccola collezione di viste - in modo che io possa riutilizzarli? Qui ci sono alcune cose che ho trovato che mi fanno da parte, ma non sono grandioso:
- Posso trascinare la raccolta di viste e controlli nella sezione Oggetti personalizzati della Libreria; poi, più tardi, posso trascinarli di nuovo su altre viste. Ma (a) dimentica quali immagini sono state associate ai due UIImages, (b) c'è un sacco di ricablaggio manuale di quattro o cinque prese, e (c) soprattutto, questo non porta il codice. (Forse c'è un modo semplice per cablare il codice?)
- Penso che potrei creare un IBPlugin; Non sono sicuro se ciò sarebbe di aiuto, e sembra un sacco di lavoro, e inoltre non mi è del tutto chiaro se IBPlugins funzioni per lo sviluppo di iPhone.
- Ho pensato, "Hmm, c'è il codice associato a questo - che odora di controller", così ho provato a creare un controller personalizzato (ad esempio
WebServiceValidatorController
) con il file XIB associato. In realtà ciò sembra davvero promettente, ma a quel punto non riesco a capire come, in Interface Builder, trascinare questo componente su altre viste. IlWebServiceValidatorController
è un controller, non una vista, quindi posso trascinarlo in una finestra del documento, ma non in una vista.
Ho la sensazione che mi manca qualcosa ovvio ...
Ho trovato questo collegamento per fornire alcune buone informazioni: http://www.bartlettpublishing.com/site/bartpub/blog/3/entry/327 –