0

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

4

1 回答 1

3

几个问题:

你应该releaseABNewPersonViewController展示它之后。

您将 显示ABNewPersonViewController为模态对话框,presentModalViewController:但您将其从屏幕上删除,就好像它被推到了UINavigationControllerwith 上一样popViewControllerAnimated:。相反,您应该pushpop,或者presentdismiss。(如果您不知道这意味着什么,请阅读一下他的 View Controller 文档)

即使你实现了ABNewPersonViewControllerDelegate协议,你也永远不会设置delegate.ABNewPersonViewController

于 2010-03-04T02:56:46.570 回答