我使用CNContactPickerViewController
to允许用户看到他们的联系人列表,然后选择一个联系人。然而,尽管我可以向他们展示自己的联系人列表,没有选择任何接触的能力。我只想找他们选择一个联系人。在名称列表中没有选择挖掘,如果你点击一个人,你会得到他们的联系卡。没有什么,屏幕,使他们要么挑接触上。所以网,我可以向他们展示他们的接触,但他们无法选择任何人。我已经试过这两个模拟器和实际设备上。
下面是我创建的用于处理什么应该是一个简单的过程类:
import Foundation
import ContactsUI
class ContactsController: NSObject, CNContactPickerDelegate {
private var parentController:UIViewController!
init(parentController:UIViewController) {
super.init()
self.parentController = parentController
openContactList()
}
private func openContactList() {
let picker = CNContactPickerViewController()
picker.delegate = self
picker.displayedPropertyKeys = [CNContactPhoneNumbersKey]
self.parentController.present(picker, animated: true)
}
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
print("\(contact.givenName) \(contact.familyName): \(contact.phoneNumbers.first)")
}
}
作为一个更新,我实现:
func contactPickerDidCancel(_ picker: CNContactPickerViewController) {
print("Canceled")
}
这种方法不会被调用。我的假设是,什么是错与delegate.Incidentally,我做的下面的实例移动到一流水平的情况下,这是走出去的范围。这并没有帮助:
让选择器= CNContactPickerViewController()
问题是,我的代表是走出去的范围。这个问题是不是在我贴在我的OP类。我打电话从IBAction
这个类在UITableViewCell
这是走出去的范围因此该类丢失。抱着我ContactsController
变量从调用类的类层次,解决了这个问题。