• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#092 – Gestire le Preferenze delle nostre Applicazioni iPhone e iPad (Parte 1)

By Gabriele Pongelli | on 12 Aprile 2011 | 13 Comments
Senza categoria

Ciao a tutti, sono Gabriele e in questa serie di articoli vi spiegherò come aggiungere e gestire le impostazioni nelle vostre Applicazioni iPhone e iPad tramite l’app nativa “Impostazioni”, presente in ogni dispositivo mobile Apple. Quando sviluppiamo un’applicazione per l’iPhone o iPad e vogliamo dare la possibilità di far scegliere alcune impostazioni ai nostri utenti, possiamo in realtà seguire due strade, ognuna con i suoi pregi e difetti, vediamo insieme quali sono, poi ci concentreremo sulla seconda opzione.

Come gestire le preferenze nelle applicazioni iPhone e iPad?

Come anticipato poco fa esistono due tecniche differenti:

  1. Prima soluzione: realizziamo un’apposita view all’interno dell’applicazione stessa, molto utile quando non vogliamo far uscire l’utente dalla nostra app (molto comodo, ad esempio, quando si crea un gioco). In questo caso ci dovremo preoccupare di sviluppare l’intera view interna alla nostra app e il relativo controller per ogni device supportato. L’applicazione, in questo modo, risulterà un tantino più pesante in termini di pacchetto da scaricare e di RAM occupata durante l’uso e, ovviamente, dovremmo farla interagire perfettamente con il resto dell’applicazione.
  2. Seconda soluzione: ci appoggiamo all’app nativa “Impostazioni”, opzione che potrebbe risultare scomoda quando occorre modificare le impostazioni di continuo (ad esempio la calibrazione dell’accelerometro in un videogioco). Al contrario, risulta un’ottima scelta le per memorizzare dati come gli account o impostazioni poco variabili nel tempo. Le dimensioni della nostra app, e di conseguenza il download della stessa, non si appesantisce più di tanto (vedremo che per utilizzare alcune impostazioni di base occorrerà aggiungere un solo file) e non ce ne dovremo inoltre preoccupare all’interno del flusso dell’app principale, se non per recuperare i valori impostati. Infine, ultima considerazione ma non meno importante, non ci sarà ovviamente bisogno di adattare la view alla grafica dell’iPad o dell’iPhone 4 anche quando vogliamo creare un’app universale.

Creiamo un nuovo progetto XCode

Fatta questa piccola premessa partiamo con il nostro tutorial. Apriamo XCode e creiamo un nuovo progetto per iPhone di tipo “view-based” (scegliamolo dall’elenco dei template disponibili), diamo quindi un nome e procediamo (il mio l’ho chiamato per comodità “preferences_part1”).

Aggiungiamo quindi il file delle impostazioni cliccando su “Add -> New File” e nel gruppo iOs andiamo a cercare “Resource” quindi “Settings Bundle”.


t092-gestire-preferenze-applicazioni-iphone-ipad-01

Come nome per il file ho lasciato quello di default, “Settings.bundle”.


t092-gestire-preferenze-applicazioni-iphone-ipad-02

Il bundle appena creato contiene due files: “Root.plist” e “Root.strings”, tralasciamo quest’ultimo e concentriamoci su “Root.plist”. Apriamolo e noteremo che questo è già popolato:


t092-gestire-preferenze-applicazioni-iphone-ipad-03

Come si può notare, sono presenti una serie di “Item” che contengono diversi tipi di chiavi, vediamo brevemente quali sono i tipi di controlli che possiamo utilizzare:

Tipo Identificativo
Testo PSTextFieldSpecifier
Titolo PSTitleValueSpecifier
Switch On/Off PSToggleSwitchSpecifier
Slider PSSliderSpecifier
Scelta Multipla PSMultiValueSpecifier
Gruppo PSGroupSpecifier
Pannello secondario PSChildPaneSpecifier

Vediamo ora come si utilizzano eliminando nel nostro “Root.plist” i quattro Item (e solo quelli), ottenendo una situazione simile alla seguente:


t092-gestire-preferenze-applicazioni-iphone-ipad-04

Popoliamo le impostazioni

Aggiungiamo un Item in “PreferenceSpecifiers” selezionando questa riga e cliccando sul pulsante oltre la destra della tabella, modifichiamo il tipo dell’ “Item 0” appena aggiunto in “Dictionary” (sostituendolo al “String” di default).

Selezioniamo “Item 0” e clicchiamo sul pulsante alla destra della tabella per inserire la prima chiave. Scriviamo quindi in “Key” (la colonna di sinistra) la parola “Type” e in “Value” (la colonna di destra) “PSGroupSpecifier”.

Selezionando ora la riga appena modificata e clicchiamo sul “+” a fine tabella, nella nuova riga scriviamo in “Key” “Title” e in “Value” “Gruppo 1”.

Abbiamo appena aggiunto un gruppo nel pannello delle Impostazioni!

Eseguiamo il “Build and Run” e nel simulatore usciamo dall’applicazione (ancora vuota) ed entriamo nelle Impostazioni (nel mio caso “Settings”), come vedete c’è una nuova riga “preferences_part1” nella tabella. Aprendola troveremo proprio “Gruppo 1”:).


t092-gestire-preferenze-applicazioni-iphone-ipad-05-06

Torniamo in Xcode e continuiamo a popolare il file “Root.plist” fino ad ottenere una situazione simile alla seguente:


t092-gestire-preferenze-applicazioni-iphone-ipad-07


t092-gestire-preferenze-applicazioni-iphone-ipad-08

Rapida spiegazione del contenuto:

  • nei campi “Type” di ogni Item si imposta un tipo tra quelli elencati nella tabella
  • il campo “Title” contiene la stringa da far visualizzare nella sinistra del campo di tipo “Type” appena inserito
  • il campo “Key” contiene una chiave che utilizzeremo nel programma per ottenere il valore impostato utilizzando il paradigma KVC.

Questi sono i campi principali, ora un piccolo compito per voi a casa: provate a cambiare in un campo “PSTextFieldSpecifier” il booleano “IsSecure”, o ad inserire tra le “KeyboardType” uno tra questi valori “NumbersAndPunctuation”, “NumberPad”, “URL”, “EmailAddress” e notate come vi cambia il campo di testo nelle impostazioni 😉 .

Interfaccia utente delle impostazioni e un po’ di codice

Passiamo quindi a realizzare l’interfaccia grafica dell’applicazione utilizzando Interface Builder e XCode.

Inidiamo a dichiarare gli oggetti che useremo. Il codice da inserire nel file header del ViewController è il seguente:

@interface preferences_part1ViewController : UIViewController {
	IBOutlet UILabel* nome;
	IBOutlet UILabel* si_no;
	IBOutlet UILabel* voto;
	IBOutlet UILabel* interessato;
	IBOutlet UIButton* refresh;
}

aggiungiamo inoltre un IBAction che associeremo al pulsante e ci permetterà di prelevare i dati delle impostazioni:

-(IBAction) refresh;

Apriamo ora Interface Builder e trasciniamo semplicemente gli oggetti all’interno della view. Dopo una sistemata generale dovrebbe presentarsi più o meno in questo modo:


t092-gestire-preferenze-applicazioni-iphone-ipad-09

Colleghiamo quindi gli outlet del controller agli oggetti della view appena disegnati:


t092-gestire-preferenze-applicazioni-iphone-ipad-10

Aggiungiamo infine il codice necessario per leggere i valori all’interno del metodo “refresh”:

-(IBAction) refresh
{
	NSUserDefaults* userDef = [NSUserDefaults standardUserDefaults];
	[nome setText:[userDef stringForKey:@"yourName"]];
	[si_no setText:[userDef stringForKey:@"yesOrNo"]];	
	[voto setText:[userDef stringForKey:@"theSlider"]];
	[interessato setText:[userDef stringForKey:@"votoMultivalue"]];	
}

Come avrete notato, alla pressione del pulsante otteniamo, tramite un metodo di classe, un riferimento alla classe NSUserDefaults, che di fatto è la classe “ponte” tra la nostra app e quella delle Impostazioni.

Il passo successivo è valorizzare le label della nostra view utilizzando i valori ottenuti dalle chiavi indicate, ovvero quelle inserite nel file “Root.plist” alla voce “Key” dei vari Item!

Compiliamo ed eseguiamo, l’applicazione nel simulatore ci mostra le label non valorizzate, per leggerle correttamente usciamo dall’applicazione, andiamo a modificare le impostazioni e torniamo nell’applicazione, clicchiamo quinsi sul tasto “refresh” ed ecco i valori inseriti.


t092-gestire-preferenze-applicazioni-iphone-ipad-11


t092-gestire-preferenze-applicazioni-iphone-ipad-12

Per questa prima parte è tutto, prossimamente vedremo come ampliare e migliorare le impostazioni della nostra applicazione 🙂

Se avete problemi con il tutorial, questo è il nostro file di progetto.

Share this story:
  • tweet

Tags: esempi XcodeGabriele Pongelligestire impostazioni applicazioni iphonegestire preferenze app ipadimpostazioni app iPadpreferenze applicazioni iphoneTutorial Praticitutorial Xcode

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • Xcode 4: Distribuzione Ad Hoc delle applicazioni iPhone e iPad

    10 Gennaio 2012 - 20 Comments
  • Tutorial pratici per iOS SDK: disponibile la versione 2.0 aggiornata a iOS 5 e XCode 4.2

    16 Novembre 2011 - 6 Comments
  • T#101 – Integrare AirPrint per stampare dalle applicazioni iPhone e iPad

    13 Settembre 2011 - 10 Comments

Author Description

13 Responses to “T#092 – Gestire le Preferenze delle nostre Applicazioni iPhone e iPad (Parte 1)”

  1. 12 Aprile 2011

    Dario

    Bella lììììì
    Questo tutorial ci voleva proprio!
    In gamba ragazzi!!!

  2. 13 Aprile 2011

    Gabriele Pongelli

    Sono contento che anche questo argomento interessi un pochino 😉
    Non è finita comunque qui perché sono in programma altri tutorial sull’argomento 😉

  3. 13 Aprile 2011

    nitroxx92

    Non vedo l’ora! Giusto perchè devo portare una email da questo bundle alla mia app ma non riesco a farle fare cosa voglio io =(

  4. 26 Giugno 2011

    Gabriele Pongelli

    ciao nitroxx, scusa se ti rispondo solo adesso ma non mi è arrivata la notifica del tuo commento…
    per leggere all’interno del tuo software un campo delle preferenze (nel tuo caso una email) basta seguire questo tutorial, in particolare per il campo “nome”.

    per qualsiasi problema sono qui 😉

  5. 26 Giugno 2011

    Gingi74

    Ciao, complimenti per il tutorial.
    Ma se devo solamente usare un UISwitch per settare l’applicazione, devo per forza usare un settings bundler?
    Nella mia App non riesco a memorizzare la posizione dello Switch e quindi al successivo riavvio devo nuovamente cambiare la preferenza.
    Cosa devo fare?

  6. 27 Giugno 2011

    Gabriele Pongelli

    Se vuoi inserire questa impostazione nell’applicazione “impostazioni” la risposta è sempre “si, ti serve un settings.bundle” .
    Essendo un solo switch io sarei tentato di inserirlo in una view del progetto, magari in quella tipica di “Info” , “Credits” o simili.

    Per quanto riguarda la posizione dello switch non mi è molto chiara la domanda: stai parlando di un progetto utilizzando un settings.bundle ? Hai seguito come ho fatto io nel tutorial e non funziona lo switch?

  7. 27 Giugno 2011

    Gingi74

    Ciao, ho inserito lo switch in una view del progetto.
    La modifica all’applicazione data dall’uso dello switch funziona, solo che non riesco a far memorizzare la posizione dello switch.

  8. 27 Giugno 2011

    Gabriele Pongelli

    devi rendere persistente la modifica della posizione dello switch, salvando il valore in un .plist, in un database o in un file di testo, da ricaricare ogni volta che apri l’applicazione 😉

  9. 27 Giugno 2011

    Gingi74

    Se non è troppo disturbo, potresti farmi un esempio con codice?

  10. 28 Giugno 2011

    Gabriele Pongelli

    Basta fare una semplice ricerca qui su devapp e trovi almeno un paio di tutorial sulla lettura e salvataggio dei file 😉

  11. 3 Luglio 2011

    Localizzare le preferenze delle applicazioni iPhone e iPad | devAPP

    […] lingue, seguendo il tutorial di Vanni, sappiamo aggiungere le nostre preferenze, seguendo il mio precedente tutorial, ma forse non avete ancora idea di come si localizzino le preferenze delle nostre app iOS? Se non […]

  12. 30 Marzo 2012

    Daniele Bussandri

    Ciao, ho scaricato il codice di questo tutorial, ma cliccando il button refresh le label non si popolano, anzi, si svuotano..
    sapresti dirmi come mai?dove sbaglio?

  13. 1 Aprile 2012

    Gabriele Pongelli

    Ciao,
    come dice la guida, prima di fare refresh sei andato nelle impostazioni e hai modificato qualche campo?
    una volta cambiati i valori nelle impostazioni vai nell’applicazione e fai il refresh.

    Ing. Gabriele Pongelli .

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO