iphone ABNewPersonViewController, кажется, не отвечает делегату - PullRequest
0 голосов
/ 03 марта 2010

Я на полпути к реализации очень простой кнопки «Добавить контакт». Я вызываю «Добавить представление» с помощью кода (через связанный UIButton, который работает):

- (IBAction)showAddContact {
 NSLog(@"Hit showAddContact");

 ABNewPersonViewController *newPersonViewController = [[ABNewPersonViewController alloc] init];

 addContactNavController = [[UINavigationController alloc] initWithRootViewController:newPersonViewController];
 [self presentModalViewController:addContactNavController animated:YES];
}

и затем я также установил резонанс делегата:

- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person {
  NSLog(@"Hit newPersonViewController");
 //ABContact *contact = [ABContact contactWithRecord:person]; 
 [self.navigationController popViewControllerAnimated:YES];
}

в моем заголовке я установил:

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

@interface test2ViewController : UIViewController <ABNewPersonViewControllerDelegate> {
UINavigationController* addContactNavController;
}

- (IBAction)showAddContact;

@end

Я добавил фреймворки Addressbook и AddressBookUI.

Диалоговое окно добавления появляется, как и ожидалось, я могу редактировать контакт, но я не могу удалить модальный контроллер вида из вида.

Я даже продублировал проблему в простом тестовом проекте, доступном здесь: текст ссылки

Чего мне не хватает? Спорим, это что-то чрезвычайно простое. Спасибо @ norskben

1 Ответ

3 голосов
/ 04 марта 2010

Пара проблем:

Вы должны release ABNewPersonViewController после его представления.

Вы представляете ABNewPersonViewController как модальный диалог с presentModalViewController:, но вы удаляетес экрана, как если бы он был нажат на UINavigationController с popViewControllerAnimated:.Вместо этого вы должны либо push и pop , либо present и dismiss .(Если вы не знаете, что это значит, прочитайте немного в документации View Controller)

Даже если вы реализуете протокол ABNewPersonViewControllerDelegate, вы никогда не установите свойство delegate ABNewPersonViewController.

...