Как правильно использовать ABPersonViewController с ABPeoplePickerNavigationController для просмотра Контактной информации?

Подсказка для изменения имен файлов обеспечивается программой xdg-user-dirs-gtk-update , которая работает очень рано в процессе входа в систему GnomeDisplayManager.

Эта программа смотрит на файл/etc/xdg/user-dirs.conf для некоторых опций. Это может быть отключено флагом в том файле.

Это может также быть отключено на основе в расчете на пользователя путем создания/редактирования подобного файла в пользователях .config каталог.

[еще 114] информация может быть найдена в http://www.freedesktop.org/wiki/Software/xdg-user-dirs , хотя имена файлов, используемые, там могло бы сбивать с толку на первый взгляд.

Обратите внимание на то, что каталоги, содержащие эти конфигурационные файлы, могут быть где-то в другом месте. Обратитесь к веб-странице для получения дополнительной информации

19
задан Hiren 20 April 2012 в 07:00
поделиться

1 ответ

Внимание всем, кто сам сталкивается с этой проблемой: мне удалось добиться правильного поведения, создав экземпляр ABPersonViewController в viewDidLoad ( ) , как показано ниже:

Как и раньше, вот мой метод делегата ABPeoplePickerNavigationController:

- (BOOL) peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
    BOOL returnState = NO;

    PersonViewController *personView = [[PersonViewController alloc] init];

    [peoplePicker pushViewController:personView animated:YES];
    [personView displayContactInfo:person];

    [personView release];

    return returnState;
}

Вот мой файл заголовка PersonViewController.h (делегат ABPersonViewController):

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <AddressBookUI/AddressBookUI.h>

@interface PersonViewController : UIViewController <ABPersonViewControllerDelegate> 
{
    ABPersonViewController *personController;
}

- (void) displayContactInfo: (ABRecordRef)person;

@end

Наконец, вот реализация делегата (PersonViewController.m):

#import "PersonViewController.h"

@implementation PersonViewController

- (void) viewDidLoad
{
}

- (void) viewDidUnload
{
    [personController release];
}

- (void) displayContactInfo: (ABRecordRef)person
{
    personController = [[ABPersonViewController alloc] init];
    [personController setDisplayedPerson:person];
    [personController setPersonViewDelegate:self];
    [personController setAllowsEditing:NO];
    personController.addressBook = ABAddressBookCreate();   

    personController.displayedProperties = [NSArray arrayWithObjects:
        [NSNumber numberWithInt:kABPersonPhoneProperty], 
        nil];

    [self setView:personController.view];
}

- (BOOL) personViewController:(ABPersonViewController*)personView shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifierForValue
{
    // This is where you pass the selected contact property elsewhere in your program
    [[self navigationController] dismissModalViewControllerAnimated:YES];
    return NO;
}

@end

Надеюсь, это окажется кому-то полезным. Интерфейс пользовательского интерфейса AddressBook был немного сложным для меня, чтобы понять (хотя я новичок в разработке iPhone, поэтому я

9
ответ дан 30 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: