• 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#071 – AccessContact, accediamo ai dati dei contatti nelle nostre iPhone App

By Andrea Busi | on 20 Settembre 2010 | 8 Comments
Senza categoria

T071 Access Contact - Accedere ai contatti iPhone xcode 00 Eccoci con un nuovo tutorial di programmazione iPhone (sicuramente utile anche durante lo sviluppo di applicazioni per iPad), grazie al quale vi insegneremo come interfacciarvi con l’applicazione nativa “Contatti” presente di default nei device Apple. Vedremo come richiamarla da una nostra applicazione e come ricavare i dati di uno specifico contatto selezionato. Insomma, un utile strumento che potrebbe trovare ampio utilizzo in molte applicazioni! Ma ora basta chiacchiere, partiamo subito con il nostro tutorial!

1. Definiamo il nuovo progetto

Aprimo Xcode, selezioniamo “File -> New Project”. Nel menù che ci appare selezioniamo “View-based Application”, clicchiamo su “Choose…” e immettiamo come nome “AccessContact” e fate clic su “Save”. Abbiamo così creato il nostro nuovo progetto.


T071 Access Contact - Accedere ai contatti iphone xcode 01

Apriamo il file “AccessContactViewController.h”, che è la classe della vista che ci viene fornita con questo template. Inseriamo il seguente codice:

#import 
#import 
#import 
 
@interface AccessContactViewController : UIViewController {
	IBOutlet UILabel *labelNome;
	IBOutlet UILabel *labelCognome;
	IBOutlet UILabel *labelTel;
}
 
- (IBAction)getContatto;
 
@end

Avrete subito capito che abbiamo definito tre label e un’azione. Alle righe 2 e 3, però, abbiamo importato due librerie, che si riferiscono ad “AddressBook”, ovvero all’applicazione “Contatti”. Questo, però, non basta per poter utilizzare tutte le sue funzioni. Dobbiamo importare all’interno del nostro progetto anche il framework necessario.

Espandete la sezione “Targets” nel progetto, e cliccate con il tasto destro su “AccessContact”, selezionando poi “Get Info”. Si aprirà una nuova schermata, in cui dobbiamo andare nella se- zione “General”. Nell’angolo in basso a sinistra noteremo un bottone “+”, clicchiamo e si aprirà un elenco di tutti i framework disponibili:


T071 Access Contact - Accedere ai contatti iphone xcode 02

Selezioniamo “AddressBook.framework” e “AddressBookUI.framework” e clicchiamo poi su “Add”. Avremo così aggiunto questi due framework al nostro progetto. Possiamo così chiudere

la schermata delle proprietà. Salviamo il file “AccessContactViewController.h” e facciamo doppio clic su

“AccessContactViewControlle.xib” per aprire Interface Builder.

2. Importiamo il framework necessario

Dobbiamo ora definire l’aspetto grafico della nostra applicazione. Inseriamo le label necessarie e un bottone, per ricreare un aspetto grafico come questo:


T071 Access Contact - Accedere ai contatti iphone xcode 03

Le label con il testo “—” sono quelle che poi conterranno le informazioni sul contatto selezio- nato dall’utente. Dobbiamo ora collegare gli elementi definiti in precedenza con quelli che abbiamo appena inserito nella vista. Tramite il pannello dei documenti selezioniamo “File’s Owner”, e apriamo il “Connections Inspector”. Potremo vedere i componenti che abbiamo dichiarato:


T071 Access Contact - Accedere ai contatti iphone xcode 04

Ora dobbiamo collegarli nella maniera corretta, ovviamente in base al nome con cui li abbiamo chiamati: “labelNome”, quindi, andrà collegata con la label a fianco di “Nome” e così via. L’azione “getContatto”, invece, sarà da collegare al bottone, scegliendo come sempre “Touch Up Inside” tra le azioni disponibili. Ecco il risultato finale dei collegamenti:


T071 Access Contact - Accedere ai contatti iphone xcode 05

Possiamo salvare tutto e chiudere Interface Builder.

3. Scriviamo il codice necessario

Dobbiamo ora implementare i metodi necessari per far funzionare l’applicazione. Iniziamo con la definizione del metodo “getContatto”, ovvero l’azione collegata alla pressione del bottone. Apriamo il file “AccessContactViewController.m” e inseriamo il seguente codice:

#import "AccessContactViewController.h"
 
@implementation AccessContactViewController
 
-(IBAction)getContatto {
	//Crea il picker
	ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
	//Imposta il delegate del picker come vista principale
	picker.peoplePickerDelegate = self;
	//Visualizza il picker
	[self presentModalViewController:picker animated:YES];
	//Rilascio
	[picker release];
}

Come si può leggere dai commenti, questo metodo istanzia un oggetto chiamato “picker”, che ci permetterà di aprire l’applicazione nativa “Contatti”. Alla riga 9 definiamo il delegato di tale oggetto: impostando “self”, comunichiamo che sarà la stessa classe (ovvero “AccessContactViewController”) a definire gli altri metodi necessari, che definiremo tra poco. Alla riga 11, infine, inseriamo tale oggetto come vista principale della nostra applicazione: l’utente vedrà così comparire l’applicazione nativa “Contatti” all’interno della nostra applicazione “AccessContact”.

Dobbiamo ora implementare i metodi richiesti dal delegato. Ecco il codice da inserire:

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
	//Settiamo il nome
    labelNome.text = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
	//Settiamo il cognome
    labelCognome.text = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
	//Settiamo il numero di telefono
	ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonPhoneProperty);
	labelTel.text = (NSString*)ABMultiValueCopyValueAtIndex(multi, 0);
	//Rimuove il controller "Contatti"
    [self dismissModalViewControllerAnimated:YES];
    return NO;
}
 
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {
    // facciamo tornare il controller alla vista principale
	[self dismissModalViewControllerAnimated:YES];
}

Il primo metodo legge le informazioni del contatto selezionato, e le setta nelle apposite label. L’unico inconveniente è dato dalle righe 7 e 8, che si occupano della lettura del numero di telefono: viene letto il primo numero presente (in quanto potrebbero anche esserci più numeri). E se non vi fosse nessun numero associato al contatto? In tal caso l’applicazione crasha. Questo avviene perché non abbiamo effettuato nessun controllo, ma potete semplicemente risolvere questo problema tramite un opportuno ciclo if.

Il metodo che inizia alla riga 15, infine, si occupa di chiudere l’applicazione “Contatti” quando l’utente sceglie di uscire senza selezionare nessun contatto (ovvero quando clicca su “Cancel”). Potete notare che l’istruzione di tale metodo è uguale a quella presente alla riga 10, che è uguale a sua volta a quella presente alla riga 7 del primo metodo implementato.

Cliccate su “Build and Go!” e testate la vostra applicazione!


T071 Access Contact - Accedere ai contatti iphone xcode 06

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


La guida è stata tradotta in italiano e ampliata da Andrea Busi per “devAPP”. Trovare la guida originale a questo indirizzo: “Access the Address Book: Iphone Noob“. I meriti delle rispettive versioni, quindi, sono dei legittimi autori.

Share this story:
  • tweet

Tags: accedere ai contatti xcodeaccess contact iphone sdkAddressBookAddressBook frameworkAddressBookUIAddressBookUI frameworkandrea busiTutorial Pratici

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

  • “Tutorial pratici per iOS SDK” si aggiorna alla versione 2.1

    10 Maggio 2012 - 1 Comment
  • Tutorial pratici per iOS SDK: disponibile la versione 2.0 aggiornata a iOS 5 e XCode 4.2

    16 Novembre 2011 - 6 Comments
  • T#096 – Facciamoci lasciare una recensione in App Store dalla nostra applicazione con Appirater

    15 Giugno 2011 - 40 Comments

Author Description

23 anni, è studente di Ingegneria Informatica presso l’Università di Bergamo (laurea Magistrale). Appassionato d’informatica sin da bambino, conosce molto bene il C++, Java e l'ObjectiveC, con cui ormai programma con successo da qualche anno. Ha già scritto un ebook “Tutorial pratici per iPhone SDK”, che ha avuto un ottimo successo, e gestisce da quasi due anni BubiDevs, un piccolo blog che ha dato l’ispirazione anche a devAPP.

8 Responses to “T#071 – AccessContact, accediamo ai dati dei contatti nelle nostre iPhone App”

  1. 20 Settembre 2010

    Tweets that mention T#071 - AccessContact, accediamo ai dati dei contatti nelle nostre iPhone App | devAPP -- Topsy.com

    […] This post was mentioned on Twitter by Rynox, devAPP and iPadWorld.it, Bubi Devs. Bubi Devs said: T#071 – AccessContact, accediamo ai dati dei contatti nelle nostre iPhone App: Eccoci con un nuovo tutorial di pro… http://bit.ly/9w0lHT […]

  2. 20 Settembre 2010

    Paolo

    C’è un modo per mettere tutti i dati del contatto in una table?

    E come potrei fare per modificare i dati del contatto scelto tramite le ui predisposte?

  3. 1 Ottobre 2010

    Andrea Busi


    Paolo:

    C’è un modo per mettere tutti i dati del contatto in una table?

    E come potrei fare per modificare i dati del contatto scelto tramite le ui predisposte?

    per la modifica non saprei, non so quali funzioni Apple mette a disposizione.
    Per inserire i valori in una table, invece, ti basta salvare i dati letti in alcune variabili (o in un oggetto predisposto), per poi visualizzarli tramite una classica tabella..

  4. 13 Dicembre 2010

    Pugia

    Grazie Andrea, i tuoi tutorial sono fantastici!
    Mi chiedevo come fare a far scegliere all’utente quale numero di telefono prendere nel caso in cui ce ne siano più di uno…mi sai dare una mano? 😉

  5. 31 Gennaio 2011

    Biro

    Ciao ragazzi!
    Ottimo tutorial..quello che mi chiedevo è….e se si volesse anche visualizzare anche l’immagine del contatto come faccio? la guida dice che sono cose separate…ma onestamente obj-C mi sembra sempre più ostico…

  6. 1 Aprile 2011

    barbygirl

    anche io ho la stessa necessità di Pugia, scegliere quale numero utilizzare.
    Per prenderli tutti non ho avuto problemi, ho utilizzato un array, ma adesso come faccio a far scegliere il numero che voglio?
    io scrivo i numeri in una o più UILAbel, come faccio ad acquisire quello che mi serve?
    grazie

  7. 18 Ottobre 2011

    barbygirl

    seguendo questo tutorial sono riuscita a far visualizzare i contatti come nell’applicazione nativa “Contatti” ma con delle modifiche nei dati secondo mie esigenze, ho però un problema: se io volessi tornare indietro, dove c’è il pulsante “acquisisci contatti” come devo fare? al momento l’unico modo che ho è chiudere l’applicazione e farla riaprtire, ma nn è per niente bello. Mi sapete dare indicazioni?

  8. 6 Aprile 2013

    DevTutorial #7 – AccessContact, accediamo ai dati dei contatti - Bubi Devs

    […] Leggi il tutorial completo su devAPP […]

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