我正在实施一个非常基本的“添加联系人”按钮。我使用代码调用'添加视图'(通过链接的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
答案 0 :(得分:3)
一些问题:
出示后,您应该release
ABNewPersonViewController
。
您将ABNewPersonViewController
作为模式对话框与presentModalViewController:
一起展示,但是您将其从屏幕上移除,就好像它是UINavigationController
上的popViewControllerAnimated:
一样。相反,你应该推送和 pop ,或者提交和解雇。 (如果您不知道这意味着什么,请阅读View Controller文档中的一点内容)
即使您实施了ABNewPersonViewControllerDelegate
协议,也从未设置delegate
的{{1}}属性。