首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置了CNUI错误选择谓词,但委托没有实现contactPicker:didSelectContact:

设置了CNUI错误选择谓词,但委托没有实现contactPicker:didSelectContact:
EN

Stack Overflow用户
提问于 2015-09-26 21:13:43
回答 1查看 1.7K关注 0票数 4

我尝试使用新的CNContactPickerViewController iOS 9.0来选择目标-C中的联系人。我设置了委托并实现了CNContactPickerDelegate方法。

代码语言:javascript
复制
@import ContactsUI;
@import Contacts;
//-----------------------------------------------------------------------
- (void) presentContacts
{
    CNContactPickerViewController *contactPicker = [[CNContactPickerViewController alloc] init];
    contactPicker.delegate = self;
    contactPicker.predicateForEnablingContact = [NSPredicate predicateWithFormat:@"familyName LIKE[cd] 'smith'"];
    contactPicker.predicateForSelectionOfContact = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"];
    [_myViewController presentViewController:contactPicker animated:YES completion:nil];
}
//-----------------------------------------------------------------------
- (void) contactPickerDidCancel: (CNContactPickerViewController *) picker
{
    NSLog(@"didCancel");
}
//-----------------------------------------------------------------------
- (void) contactPicker: (CNContactPickerViewController *) picker
      didSelectContact: (CNContact *)                     contact
{
    NSLog(@"didSelectContact"):
}
//-----------------------------------------------------------------------
- (void)      contactPicker: (CNContactPickerViewController *) picker
   didSelectContactProperty: (CNContactProperty *)             contactProperty
{
    NSLog(@"didSelectProperty");
}
//-----------------------------------------------------------------------

联系人选择器具有可选择的“smith”选项,但我得到以下消息:

设置了CNUI错误选择谓词,但委托没有实现contactPicker:didSelectContact:和contactPicker:didSelectContactProperty:。这些谓词将被忽略。

我从来没有从委托方法中获得任何日志。它的行为与线完全一样。

代码语言:javascript
复制
    contactPicker.delegate = self;

被忽视了。即使我在选择器中单击“取消”按钮,我也没有收到"didCancel“消息,但我得到了另一条消息:

com.apple.MobileAddressBook.ContactsViewService插件失效

我在https://forums.developer.apple.com/thread/12275中发现了类似的问题,他解决了这个问题,并告诉我们:“所以我发现我调用的ContactsPicker在错误的模块中”,但我不明白我们如何得到错误的模块,以及如何调用“正确”模块。

我在模拟器和真实设备(iPad)上也有同样的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-01 01:47:44

感谢Joel在我的相关问题With CNContactPickerViewController in iOS 9.0, how to enable/disable single or multiple selection?中,我发现我只是忘记将CNContactPickerViewController存储在用户进行选择的时间存在的属性中。

所以我的代码变成:

代码语言:javascript
复制
- (void) presentContacts
{
    _contactPicker = [[CNContactPickerViewController alloc] init];
    contactPicker.delegate = self;
    ...
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32802087

复制
相关文章

相似问题

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