DownPicker: una DropDownList / ComboBox per iOS e XCode scritta in Objective-C

Objective C: rimuovere da codice i vincoli impostati tramite Storyboard

Quick links: Project Page - GitHub - Pod

Presto o tardi, sviluppando con XCode per iOS, ci si scontra con la necessità di avere a disposizione un controllo che renda l'utente in grado di selezionare una singola opzione da un elenco a scomparsa. Si tratta di un elemento comune a tutte le UI principali, il cui nome è di solito DropDownList, ComboBox o qualcosa di simile e rispecchia l'aspetto, le funzionalità e le caratteristiche tipiche dell'elemento   <select>  in HTML.

Ad oggi iOS non è provvisto di un elemento di questo tipo: la cosa più simile ad esso è il controllo UIPickerView, che però ha caratteristiche estetiche e funzionali tali da non renderlo sempre utilizzabile nel modo che vogliamo. Tanto per cominciare è molto ingombrante, particolarità che lo rende inadatto a molte schermate di impostazioni dove lo spazio a disposizione è solitamente poco; inoltre, a differenza della sua controparte HTML, il suo aspetto è molto diverso dalle caselle di testo, sbilanciando così l'equilibrio dell'interfaccia utente e costringendo lo sviluppatore a soluzioni non sempre ottimali.

UIPickerView in action: not always pretty.
Il controllo UIPicker in azione: non sempre entusiasmante.

Al contrario, spesso abbiamo bisogno di un controllo leggero e poco invasivo,  in grado di fornire all'utente le informazioni necessarie a interagire per scegliere una opzione senza dover sacrificare una porzione considerevole dello schermo.

Con questo obiettivo in mente ho realizzato DownPicker, un controllo per XCode scritto in Objective-C che emula le caratteristiche estetiche e funzionali di una qualsiasi DropDownList/ComboBox utilizzando nel contempo l'interfaccia nativa di iOS: prevede infatti una UITextField che ha il compito di comunicare all'utente la necessità di effettuare un TAP (e, dopo la selezione, mostrare il risultato selezionato) e un controllo di tipo UIPickerView per gestire la selezione.

Custom Control o Control Wrapper

DownPicker può essere utilizzato in due modi: come un custom control completo (cfr. classe UIDownPicker) oppure come un control wrapper per utilizzare a tale scopo qualsiasi UITextField già esistente. I vantaggi di questo secondo utilizzo sono molteplici: in tal modo lo sviluppatore avrà infatti la possibilità di personalizzare la posizione, l'aspetto e le dimensioni del controllo UITextField secondo le modalità a lui più congeniali, tramite codice oppure sfruttando tutte le possibilità della Storyboard.

Come si presenta

A prescindere da come viene utilizzato - custom controlcontrol wrapper - il controllo sarà visualizzato nel seguente modo:

UITextField.DownPicker

 

Le classi di cui si compone sono molto leggere e semplici da utilizzare: è sufficiente fornire un NSMutableArray di dati.

Installazione

A partire da agosto 2015 è possibile installare DownPicker tramite CocoaPods seguendo le istruzioni descritte in questo articolo.

Se preferite installare il componente in modo tradizionale, prelevate l'ultima versione da questo link, quindi scompattate e copiate il contenuto all'interno del vostro progetto XCode. Potete farlo effettuando un drag-drop direttamente dentro XCode, avendo cura cura di attivare le opzioni copy items if needed e create groups.

Come Custom Control

Create una istanza della classe UIDownPicker e aggiungetela alla vostra View così come qualsiasi altro controllo:

Potrete quindi utilizzare la proprietà pubblica DownPicker per impostare le opzioni del caso.

 

Come Control Wrapper (consigliato)

Aggiungete (o scegliete) il controllo di tipo UITextField al quale volete associare un DownPicker nel vostro progetto XCode. Potete utilizzare una Storyboard o creare una istanza tramite codice; potete anche impostare constraints, coordinate X/Y, font, colori e qualsiasi altra cosa. Quando avrete finito, aprite il file .h del vostro ViewController e create la proprietà che ospiterà il vostro DownPicker Wrapper:

 

Quindi aprite il file .m e aggiungete queste righe di codice al metodo viewDidAppear del ViewController:

Download, Documentazione e Supporto

Se vi interessa supportare lo sviluppo del progetto DownPicker potete fare una piccola donazione tramite PayPal o condividere questa pagina sulle vostre pagine social utilizzando i pulsanti in fondo a questo articolo.

Felice sviluppo!

 

 

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

5 Comments on “DownPicker: una DropDownList / ComboBox per iOS e XCode scritta in Objective-C”

  1. Pingback: DownPicker: aggiunta integrazione con CocoaPods
  2. Pingback: DownPicker is now available through CocoaPods
  3. Pingback: DownPicker: A lightweight DropDownList / ComboBox for iOS written in Objective-C
  4. Pingback: imageNamed non valido dopo la creazione di un CocoaPods
  5. Pingback: Assets not found or invalid after creating a CocoaPod library

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.