已经通过实现:
[已解决]尝试用CNContactPickerViewController去绕开权限bug而直接访问通讯录
现在想要修改或扩展CNContactPickerViewController,想办法实现,类似这种效果:
单行联系人,除了名字之外,要带上:
头像和按钮
CNContactViewController Class Reference
CNContactPickerViewController Class Reference
swift CNContactPickerViewController custom cell
swift CNContactPickerViewController customize
另外,发现:
点击某个联系人后,进入的页面是:
看起来是,使用了:
CNContactViewController
?
那么就是:
干脆放弃,因为没找到办法,去修改CNContactPickerViewController中的每一行
只能想办法:
去看看,点击CNContactPickerViewController中某个联系人之后,进入的单个联系人的显示的界面中,是否可以添加额外的按钮。
结果才发现,此处的点击进入单个联系人的显示界面中,不是
CNContactViewController
而还是CNContactPickerViewController自己内部的子页面
然后在该页面中,点击了其中的内容,比如电话号码:
会调用到delegate的didSelectContactProperty方法
-》之前点击单个联系人,则是调用了delegate的didSelectContact
参考:
iOS9系列专题五——全新的联系人与联系人UI框架 – 珲少的个人空间 – 开源中国社区
或许可以通过:
继承CNContactViewController
而添加额外的按钮?
去试试:
不管上述问题了。自己自定义一个View去显示。暂时调试期间的得到的输出是:
@available(iOS 9.0, *) func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact){ print("didSelectContact") print("contact=\(contact)") /* contact=<CNContact: 0x7d2e9f50: identifier=C3068F9C-6315-4345-A069-21487A740078:ABPerson, givenName=炳恋, familyName=张, organizationName=简道, phoneNumbers=( "<CNLabeledValue: 0x7d84f0d0: identifier=7D509001-2CDF-4316-BB9F-C1E21420728A, label=_$!<Mobile>!$_, value=<CNPhoneNumber: 0x7d216140: countryCode=us, digits=+8613862050544>>" ), emailAddresses=( ), postalAddresses=(not fetched)> */ print("contact.familyName=\(contact.familyName)") //contact.familyName=张 print("contact.givenName=\(contact.givenName)") //contact.givenName=炳恋 print("contact.phoneNumbers=\(contact.phoneNumbers)") //contact.phoneNumbers=[<CNLabeledValue: 0x7877da60: identifier=7D509001-2CDF-4316-BB9F-C1E21420728A, label=_$!<Mobile>!$_, value=<CNPhoneNumber: 0x78724150: countryCode=us, digits=+8613862050544>>] for eachPhoneNumberLabelValue in contact.phoneNumbers{ print("eachPhoneNumberLabelValue.label=\(eachPhoneNumberLabelValue.label)") //eachPhoneNumberLabelValue.label=_$!<Mobile>!$_ print("eachPhoneNumberLabelValue.label.jsonKey=\(eachPhoneNumberLabelValue.label.jsonKey)") //eachPhoneNumberLabelValue.label.jsonKey=Key("_$!<Mobile>!$_") print("eachPhoneNumberLabelValue.value=\(eachPhoneNumberLabelValue.value)") let phoneNumber:CNPhoneNumber = eachPhoneNumberLabelValue.value as! CNPhoneNumber print("phoneNumber=\(phoneNumber)") //phoneNumber=<CNPhoneNumber: 0x7be9e730: countryCode=us, digits=+8613862050544> print("phoneNumber.stringValue=\(phoneNumber.stringValue)") //phoneNumber.stringValue=+86 138-6205-0544 print("phoneNumber.valueForKey(\"digits\")=\(phoneNumber.valueForKey("digits"))") //phoneNumber.valueForKey("digits")=Optional(+8613862050544) } print("contact.organizationName=\(contact.organizationName)") // let contactVC:CNContactViewController = CNContactViewController(forContact: contact) //// let contactVC:CNContactViewController = CNContactViewController(forUnknownContact: contact) // self.showViewController(contactVC, sender: self) } |
转载请注明:在路上 » [未解决]修改或扩展CNContactPickerViewController中的显示出来的单行的联系人显示形式