select CNContactPicker 中单个联系人的多个属性
select multiple properties from single contact in CNContactPicker
我正在尝试使用 CNContactPickerViewController 并让 运行 陷入如何 从单个联系人中选择多个属性的问题
选择器的基本显示
let contactStore = CNContactStore()
override func viewDidLoad() {
super.viewDidLoad()
self.askForContactAccess()
self.displayContacts()
}
func displayContacts(){
let contactPicker = CNContactPickerViewController()
contactPicker.delegate = self
self.present(contactPicker, animated: true, completion: nil)
}
在用户允许后显示地址簿(代码有但上面没有显示)
现在我想做的是当用户 select 是一个联系人时,我们导航到联系人详细信息视图(当前发生这种情况)但是当我尝试使用委托时
func contactPicker(_ picker: CNContactPickerViewController, didSelectContactProperties contactProperties: [CNContactProperty])
我看到了联系人选择器视图,我可以在其中 select 多个联系人。我不介意尝试扩展联系人详细信息视图,以便我可以 select 多个属性,但我什至不知道如何连接它。
我可以创建一个完全 自定义 table 视图 和 select 那里的属性,但是因为苹果创建了一个很好的联系人详细信息视图,我宁愿使用它.
tl;dr - 不,您不能使用 CNContactPickerViewController
到 select 一个联系人的多个属性。
完整版:
CNContactPickerViewController
执行不力且令人困惑。
它实际上并不支持 select 来自单个联系人的多个属性的能力。选择器在 select 一个联系人 属性.
后自动关闭
它实际上并没有让用户 select 来自多个联系人的特定属性。
它支持以下内容:
- Select单个联系人
- Select单个属性单个联系人
- Select多个联系人
- Select 多个联系人和 return 每个用户 select 多个联系人的单个预定(非用户选择)属性。
要让 didSelectContactProperties
委托被除空属性列表以外的任何东西调用,您必须将 predicateForSelectionOfProperty
属性 设置为指定一个且仅一个的谓词联系 属性 键。如果您提供任何其他谓词,当您点击联系人时会出现黑屏并且您的应用现在挂起并需要被终止。
我认为在选择多个联系人的联系人属性时存在一些错误。
解决方法:
我相信唯一的解决方案(除了您自己围绕 Contacts 框架的完整自定义视图控制器之外)是通过将 CNContactPickerViewController
组合成您自己的多个 属性 selection接触 selection 模式,然后使用 CNContactViewController
显示 selected 接触的详细信息。然后实现 contactViewController(_:shouldPerformDefaultActionFor:)
委托方法来跟踪用户选择的属性。
我正在尝试使用 CNContactPickerViewController 并让 运行 陷入如何 从单个联系人中选择多个属性的问题
选择器的基本显示
let contactStore = CNContactStore()
override func viewDidLoad() {
super.viewDidLoad()
self.askForContactAccess()
self.displayContacts()
}
func displayContacts(){
let contactPicker = CNContactPickerViewController()
contactPicker.delegate = self
self.present(contactPicker, animated: true, completion: nil)
}
在用户允许后显示地址簿(代码有但上面没有显示)
现在我想做的是当用户 select 是一个联系人时,我们导航到联系人详细信息视图(当前发生这种情况)但是当我尝试使用委托时
func contactPicker(_ picker: CNContactPickerViewController, didSelectContactProperties contactProperties: [CNContactProperty])
我看到了联系人选择器视图,我可以在其中 select 多个联系人。我不介意尝试扩展联系人详细信息视图,以便我可以 select 多个属性,但我什至不知道如何连接它。
我可以创建一个完全 自定义 table 视图 和 select 那里的属性,但是因为苹果创建了一个很好的联系人详细信息视图,我宁愿使用它.
tl;dr - 不,您不能使用 CNContactPickerViewController
到 select 一个联系人的多个属性。
完整版:
CNContactPickerViewController
执行不力且令人困惑。
它实际上并不支持 select 来自单个联系人的多个属性的能力。选择器在 select 一个联系人 属性.
后自动关闭它实际上并没有让用户 select 来自多个联系人的特定属性。
它支持以下内容:
- Select单个联系人
- Select单个属性单个联系人
- Select多个联系人
- Select 多个联系人和 return 每个用户 select 多个联系人的单个预定(非用户选择)属性。
要让 didSelectContactProperties
委托被除空属性列表以外的任何东西调用,您必须将 predicateForSelectionOfProperty
属性 设置为指定一个且仅一个的谓词联系 属性 键。如果您提供任何其他谓词,当您点击联系人时会出现黑屏并且您的应用现在挂起并需要被终止。
我认为在选择多个联系人的联系人属性时存在一些错误。
解决方法:
我相信唯一的解决方案(除了您自己围绕 Contacts 框架的完整自定义视图控制器之外)是通过将 CNContactPickerViewController
组合成您自己的多个 属性 selection接触 selection 模式,然后使用 CNContactViewController
显示 selected 接触的详细信息。然后实现 contactViewController(_:shouldPerformDefaultActionFor:)
委托方法来跟踪用户选择的属性。