У меня есть два класса Objective-C, которые наследуются от UIViewController, и я пытаюсь использовать другой подход к обучению взаимодействию с адресной книгой iPhone. пример Apple предполагает, что все в одном классе, но это не так, как мне нужно. Моя цель - закрыть представление адресной книги после выбора человека. Пожалуйста, посмотрите, и дайте мне знать, как я могу сделать это без CallerClass реализовать ABPeoplePickerNavigationControllerDelegate. Спасибо!
- редактировать -
То, к чему это сводится, - это [self dismissModalViewControllerAnimated: YES]; не имеет никакого эффекта в CalleeClass.m. Я все еще не могу получить реакцию на закрытие адресной книги от этой команды.
CallerClass.m
#import "CallerClass.h"
@implementation CallerClass
- (IBAction)openAddressBook {
CalleeClass *cc = [[CalleeClass alloc] init];
[self presentModalViewController:[cc doIt] animated:YES];
}
CalleeClass.h
#import <UIKit/UIKit.h>
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
@interface CalleeClass : UIViewController <ABPeoplePickerNavigationControllerDelegate> {
NSString *name;
}
-(ABPeoplePickerNavigationController *)doIt;
@property (nontoxic, retain) NSString *name;
@end
CalleeClass.m
#import <UIKit/UIKit.h>
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
#import "CalleeClass.h"
@implementation CalleeClass
@synthesize name;
… (по умолчанию ABPeoplePickerNaviationControllerDelegate реализация вне того, что перечислено)
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {}
return self;
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
self.name = (NSString *)ABRecordCopyValue(person,kABPersonAddressProperty);
[self dismissModalViewControllerAnimated:YES];
return NO;
}
-(ABPeoplePickerNavigationController *)doIt {
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
return picker;
}
@end