Я опытный разработчик программного обеспечения (в основном C и C ++ для встраиваемых систем, Linux и Qt для пользовательских интерфейсов). Недавно я перешел к разработке для iPhone и столкнулся с запутанной проблемой с UIViewController и presentModalViewController. Я пытаюсь представить модальное диалоговое окно ABPeoplePickerNavigationController, но оно не отображается.
Моим основным приложением управляет объект под названием Controller, подкласс NSObject. Недавно я добавил подкласс UIViewController под названием AddressBookController (и Controller, и AddressBookController объявлены в моем NIB).
У меня есть эта функция в Controller, который использует IBOutlet для вызова функции в AddressBookController (просто примечание, я знаю, что передача 'sender', вероятно, неверна - какой правильный способ вызова функции это ищу (id) отправителя в качестве параметра?):
- (IBAction)addressPressed:(id)sender
{
[addressViewController showContactPicker:sender];
}
Вот мое объявление интерфейса для AddressBookViewController:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
@interface AddressBookViewController : UIViewController <ABPeoplePickerNavigationControllerDelegate>
{
}
@end
Функция showContactPicker в AddressBookController выглядит следующим образом:
#import "AddressBookViewController.h"
@implementation AddressBookViewController
- (void) showContactPicker:(id)sender
{
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
[picker release];
}
...
Я с помощью отладчика подтвердил, что вызывается [self presentModalViewController: picker animated: YES], но на экране ничего не появляется, и выполнение кода просто переходит к [выпуску выбора]. Кто-нибудь знает, почему этот звонок ничего не делает? Я не вижу никаких сообщений об ошибках, предупреждений и т. Д. При выполнении этого кода.
Заранее спасибо!