Come appare l'utilizzo pratico di IBOutletCollection? Sfortunatamente la documentazione di Apple la menziona brevemente senza dare un'idea più ampia dell'uso. OK, mantiene una relazione uno-a-molti con IB, ma come accedere e utilizzare oggetti particolari in modo efficiente? Con TagName? Come garantire l'ordine degli oggetti?Utilizzo pratico efficiente di IBOutletColletion
risposta
L'ho usato di recente per inizializzare facilmente una griglia di etichette. Ho una matrice n di etichette su una vista e le riferimento singolarmente (tramite un IBOutlet) per visualizzare i dati rilevanti. Tuttavia, quando la vista viene caricata per la prima volta, desidero controllare il testo predefinito visualizzato in tutte le etichette. Inizialmente volevo mostrare un trattino, ma dato che questo è per un cliente, volevo che fosse facile cambiarlo. I contenuti della vista hanno e continuano a cambiare nel tempo, secondo le richieste dei clienti.
Invece di scrivere la riga N di codice, ho creato un IBOutletCollection e ottenuto gli stessi risultati in 4 (@property, @synthesize e for loop). YMMV ma l'ho trovato molto utile in questa situazione.
Leggere di nuovo this section nella Guida dell'utente di Interface Builder.
IBOutletCollection
s sono in realtà solo NSArray
s è possibile connettersi a più di un oggetto in IB. Tutti gli oggetti che hai collegato finiscono in questo array e puoi accedervi dal codice come qualsiasi altro oggetto in un array.
L'ho usato per minimizzare il codice. Ho una gamma di UIViews che dovrebbero reagire agli eventi di "ritocco all'interno" di alcuni UIButtons (modalità personalizzata).
Ho dato a tutti gli UIButton un tag (diciamo 1005 a 1010) e tutti gli UIViews hanno lo stesso tag di UIButton a cui rispondono.
Quindi ho collegato l'UIViews alla raccolta in Interface Builder. Tutti gli eventi di ritocco di UIButton passano alla stessa funzione nel mio controller. Questa funzione ottiene il tag dell'oggetto mittente, itera attraverso l'elenco NSArray (di "IBOutletCollection (UIView)") e confronta il tag. Ogni volta che colpisce, viene eseguita l'azione appropriata.
E 'un peccato che NSArrays sembrano non tenere l'ordine ...
- 1. utilizzo pratico di params indicizzatore
- 2. pratico utilizzo della memoria virtuale
- 3. Esempi di utilizzo pratico di Boost :: MPL?
- 4. Utilizzo pratico di HttpSessionBindingListener e HttpSessionAttributeListener
- 5. Uso pratico di `foldl`
- 6. Introduzione a Git e modelli di utilizzo pratico
- 7. Utilizzo di più allocatori in modo efficiente
- 8. Esempio pratico di metodo dinamico?
- 9. Uso pratico di Android XmlResourceParser?
- 10. Toolkit GUI pratico?
- 11. Utilizzo efficiente di MapDB (confuso circa i commit)
- 12. Come implementare un pratico schedulatore di fibre?
- 13. uso pratico di IdentityHashMap in Java 6
- 14. Qual è l'effetto pratico di viewPager.setOffscreenPageLimit (3) ;?
- 15. Uso pratico degli eventi di interfaccia
- 16. Modo pratico di spiegare "Teoria dell'informazione"
- 17. Uso pratico di @Ignore in Realm?
- 18. Uso pratico della parola chiave `stackalloc`
- 19. Qual è l'uso pratico dell'eredità protetta?
- 20. Rifacimento pratico con test unitari
- 21. Uso pratico dei futures? Cioè, come ucciderli?
- 22. Utilizzo dell'istruzione preparata più volte in modo efficiente
- 23. Qual è l'uso pratico dei riferimenti fantasma - JAVA?
- 24. ottimizzazione gcc? bug? e la sua implicazione pratico di proiettare
- 25. Comprendere BDD con un esempio pratico
- 26. Uso efficiente di WebStorm IDE
- 27. Approccio pratico per mantenere aggiornato jQuery?
- 28. Piano di studio pratico per l'apprendimento di Grails
- 29. C'è un modo pratico per comprimere NSData?
- 30. Uso pratico delle funzioni virtuali in C#
Questo è esattamente ciò che è descritto nella documentazione di Apple :) Ora, come osserva l'utilizzo pratico? Hai detto, posso accedere ad ogni oggetto come qualsiasi altro oggetto in qualsiasi altro array. Vero, ma come viene ordinato questo array? Dovrei farlo da solo all'inizio? E come distinguere gli oggetti in questo array? Con le etichette? In tal caso, dovrei scorrere l'intero array per trovare gli oggetti che sto cercando, o è meglio cercare nell'array con predicato? An so on ... – juckobee
Se stai cercando oggetti specifici probabilmente non dovresti usarlo. Usalo se vuoi essere in grado di scorrere su un elenco di elementi. Se hai bisogno di distinguerli potresti usare la proprietà 'tag', o forse' target' e/o 'action'. – Sven
Sfortunatamente, l'ordine di aggiunta di elementi alla raccolta non viene conservato nel runtime. – zubko