2010-03-03 68 views
0

我已经完成了一个非常基本的“添加联系人”按钮。我打电话“添加视图”使用的代码(通过链接的UIButton,即作品):iphone ABNewPersonViewController似乎没有回应委托

- (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 

我已经添加了框架地址簿和AddressBookUI。

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

我甚至复制的问题,提供一个简单的测试项目位置:link text

我缺少什么?我敢打赌,这是一些极其简单。 感谢@norskben

+0

只是一个小的语法问题,但是你想说的是你的'ABNewPersonViewController'实例不是*调用*委托。 –

+0

看起来像我发布的最后一个代码是一个导航控制器尝试与模式视图的一半的组合,昨天肯定是漫长的一天。看到我的评论下面的完整解决方案。 – oberbaum

回答

3

两个问题:

你应该呈现它后releaseABNewPersonViewController

您呈现ABNewPersonViewControllerpresentModalViewController:模态对话框,但你从屏幕上删除它,就好像它是一个UINavigationController推动与popViewControllerAnimated:。相反,你应该流行目前解雇。 (如果你不知道这意味着什么,读一点诠释他的视图控制器文档)

即使你实现​​协议,你永远不设置ABNewPersonViewControllerdelegate财产。

+1

感谢您的帮助。我正在尝试.delegate = self,并没有加载,但使用\t newPersonViewController.newPersonViewDelegate = self;它按预期工作!干杯。对于所有未来具有相同问题的浏览器,您都有一个例子:http://norskben.posterous.com/iphoneos-addressbook-create-new-client-and-ge – oberbaum