首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法编辑或取消CNContactViewController (iOS)

无法编辑或取消CNContactViewController (iOS)
EN

Stack Overflow用户
提问于 2016-11-12 18:25:21
回答 2查看 1K关注 0票数 2

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

代码语言:javascript
复制
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建议的另一种方法:

代码语言:javascript
复制
[self presentViewController:contactController animated:YES completion:nil];

并确保添加此委托方法:

代码语言:javascript
复制
- (void)contactViewController:(CNContactViewController *)viewController
       didCompleteWithContact:(CNContact *)contact{
    [self dismissViewControllerAnimated:YES completion:nil];

}

但是,反复获得此错误日志:

代码语言:javascript
复制
[CNUI ERROR] Contact view delayed appearance timed out

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-12 21:54:23

问题的结果是,我初始化了以下的CNContactViewController incorrectly...instead:

代码语言:javascript
复制
CNContactViewController *contactController = [CNContactViewController viewControllerForUnknownContact:contact];

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

代码语言:javascript
复制
CNContactViewController *contactController = [CNContactViewController viewControllerForNewContact:contact];
票数 0
EN

Stack Overflow用户

发布于 2016-11-12 18:44:28

与其创建UINavigationController实例,不如直接显示联系人控制器。

代码语言:javascript
复制
[self presentViewController:contactController animated:YES completion:nil];

CNContactViewControllerDelegate

代码语言:javascript
复制
- (void)contactViewController:(CNContactViewController *)viewController 
   didCompleteWithContact:(CNContact *)contact;

存在于主螺纹上

代码语言:javascript
复制
dispatch_async(dispatch_get_main_queue(), ^{
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:contactController];
    navController.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentViewController:navController animated:YES completion:nil];
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40566195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档