iphone ABNewPersonViewController似乎没有响应委托

时间:2010-03-03 14:46:52

标签: iphone new-operator addressbook contact

我正在实施一个非常基本的“添加联系人”按钮。我使用代码调用'添加视图'(通过链接的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。

添加对话框按预期出现,我可以编辑联系人,但我无法从视图中删除模态视图控制器。

我甚至在一个简单的测试项目中重复了这个问题:link text

我缺少什么?,我打赌这是非常简单的事情。 谢谢@norskben

1 个答案:

答案 0 :(得分:3)

一些问题:

出示后,您应该release ABNewPersonViewController

您将ABNewPersonViewController作为模式对话框与presentModalViewController:一起展示,但是您将其从屏幕上移除,就好像它是UINavigationController上的popViewControllerAnimated:一样。相反,你应该推送 pop ,或者提交解雇。 (如果您不知道这意味着什么,请阅读View Controller文档中的一点内容)

即使您实施了ABNewPersonViewControllerDelegate协议,也从未设置delegate的{​​{1}}属性。