2

CNContactViewController在我的应用程序中展示了一个实例。我希望用户既可以编辑联系人,也可以关闭此视图控制器。下面是呈现视图控制器的代码,它嵌入在UINavigationController. 正如您在代码中看到的,我有allowsEditing = YES,但是查看屏幕截图;你可以看到我无法编辑。谁能帮我看看我错过了什么?谢谢!

CNContactViewController *contactController = [CNContactViewController viewControllerForUnknownContact:contact];

contactController.allowsEditing = YES;
contactController.delegate = self;

contactController.contactStore = store;

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:contactController];
navController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:navController animated:YES completion:nil];

编辑:我尝试了@WrightCS 建议的不同方法:

[self presentViewController:contactController animated:YES completion:nil];

并且,确保添加此委托方法:

- (void)contactViewController:(CNContactViewController *)viewController
       didCompleteWithContact:(CNContact *)contact{
    [self dismissViewControllerAnimated:YES completion:nil];

}

但是,反复得到这个错误日志:

[CNUI ERROR] Contact view delayed appearance timed out

在此处输入图像描述

4

2 回答 2

1

UINavigationController尝试直接呈现联系人控制器,而不是创建实例。

[self presentViewController:contactController animated:YES completion:nil];

CNCContactViewControllerDelegate

- (void)contactViewController:(CNContactViewController *)viewController 
   didCompleteWithContact:(CNContact *)contact;

出现在主线程上

dispatch_async(dispatch_get_main_queue(), ^{
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:contactController];
    navController.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentViewController:navController animated:YES completion:nil];
});
于 2016-11-12T18:44:28.040 回答
0

问题最终是我初始化CNContactViewController不正确......而不是:

CNContactViewController *contactController = [CNContactViewController viewControllerForUnknownContact:contact];

这将显示一个联系人,但不允许取消联系人视图或编辑它的选项,正确的选项(对于我的场景)是使用

CNContactViewController *contactController = [CNContactViewController viewControllerForNewContact:contact];
于 2016-11-12T21:54:23.050 回答