2010-11-17 5 views
1

Configuration: Je suis à la recherche d'un aperçu de l'utilisation d'un ABPersonViewContoller sans obtenir de données du carnet d'adresses. J'ai un service Web JSON qui alimente une tableview et j'ai mes objets personnels stockés dans un mutableArray en tant que dictionnaires.Comment utiliser un ABPersonViewController sans se connecter au AddressBook

ma question: J'ai cherché et été incapable de trouver une référence à l'utilisation de personViewController avec vos propres objets. Est-ce que je peux initialiser une nouvelle personne, l'assigner à mon objet personnel et pousser le contrôleur? ou serais-je mieux de rouler ma propre vue pour reproduire la pomme?

Mise à jour: Comme Eric a suggéré d'utiliser un ABRecordRef comme objet et qu'il fonctionne effectivement. Voici un exemple de code.

// get index and set person object 
    int personIndex = [indexPath indexAtPosition: [indexPath length] - 1]; 
    ABRecordRef person = ABPersonCreate(); 

    ABRecordSetValue(person, kABPersonFirstNameProperty, [[personList objectAtIndex: personIndex] objectForKey: @"firstName"], nil); 
    ABRecordSetValue(person, kABPersonLastNameProperty, [[personList objectAtIndex:personIndex] objectForKey:@"lastName"], nil); 

    // initialize a personviewController 
    ABPersonViewController *personViewController = [[ABPersonViewController alloc] init]; 

    personViewController.personViewDelegate = self; 
    personViewController.displayedPerson = person; 
    personViewController.allowsEditing = NO; 

    // push to view controller 
    [[self navigationController] pushViewController:personViewController animated:YES]; 
    [personViewController release]; 

espérons que cela aide les autres.

Répondre

2

Le ABPersonViewController est lié au carnet d'adresses de l'appareil iOS (avec l'ensemble Address Book UI Framework), donc je crois qu'il serait plus facile de rouler le vôtre UIViewController pour obtenir ce que vous voulez. En outre, the docs note que «les contrôleurs de vue de personne doivent être utilisés avec un contrôleur de navigation afin de fonctionner correctement. Donc vous êtes (peut-être) limité là-bas.

Cela dit (et je ne l'ai pas essayé), mais il ne semble que l'attribut displayedPerson est readwrite, donc je suppose que si vos données ont été stockées dans votre tableau comme ABRecordRef il pourrait fonctionner.

+0

ouais je sais que cela peut être fait, je l'ai vu dans les applications iphone de stanford et d'autres universités. Les ajouter comme ABRecords pourrait juste fonctionner. Je vais essayer de voir. Merci! – h3r2on

Questions connexes