我在我的应用程序中展示了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

发布于 2016-11-12 21:54:23
问题的结果是,我初始化了以下的CNContactViewController incorrectly...instead:
CNContactViewController *contactController = [CNContactViewController viewControllerForUnknownContact:contact];它将显示联系人,但不允许取消联系人视图或编辑联系人视图的选项,正确的选项(对于我的方案)是使用
CNContactViewController *contactController = [CNContactViewController viewControllerForNewContact:contact];发布于 2016-11-12 18:44:28
与其创建UINavigationController实例,不如直接显示联系人控制器。
[self presentViewController:contactController animated:YES completion:nil];CNContactViewControllerDelegate
- (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];
});https://stackoverflow.com/questions/40566195
复制相似问题