CNLabelPhoneNumber标签选择器

时间:2018-11-23 07:49:57

标签: ios objective-c cncontact

一段时间以来,我一直在寻找解决方案,但找不到实现此目的的东西(下面提供的屏幕截图)。

我正在创建一个自定义ContactsViewController,它将CNContact框架用于CRUD功能。除了选择电话号码标签外,所有人都清楚如何实现它们。是否有诸如Picker View Controller这样的东西,还是应该手动实现?

Screenshot of the phone number label editing screen of Contacts

1 个答案:

答案 0 :(得分:1)

您应该手动实现该屏幕。屏幕快照上的屏幕是一个UITableViewController,其中有一组UITableView和一个选中单元格的选中标记附件指示符。

以下是预定义的电话号码标签的列表(来自the Apple Developer Documentation):

╔════════════════════════════╦═════════════════════╗
║           String           ║     Description     ║
╠════════════════════════════╬═════════════════════╣
║ CNLabelHome                ║ Home label          ║
║ CNLabelWork                ║ Work label          ║
║ CNLabelPhoneNumberiPhone   ║ iPhone number       ║
║ CNLabelPhoneNumberMobile   ║ Mobile phone number ║
║ CNLabelPhoneNumberMain     ║ Main phone number   ║
║ CNLabelPhoneNumberHomeFax  ║ Home fax number     ║
║ CNLabelPhoneNumberWorkFax  ║ Work fax number     ║
║ CNLabelPhoneNumberOtherFax ║ Other fax number    ║
║ CNLabelPhoneNumberPager    ║ Pager phone number  ║
╚════════════════════════════╩═════════════════════╝

要显示这些常量的本地化名称,请使用CNLabeledValue.localizedString(forLabel:)(感谢OOPer):

快速

let localizedLabelString = CNLabeledValue<NSString>.localizedString(forLabel: CNLabelPhoneNumberiPhone)
print(localizedLabelString) //iPhone

Objective-C

NSString *localizedLabelString = [CNLabeledValue localizedStringForLabel: CNLabelPhoneNumberiPhone];
NSLog(@"%@", localizedLabelString); //iPhone

如果要为联系人创建自定义标签,只需使用任意字符串作为标签名称:

let phoneNumber = CNPhoneNumber(stringValue: "+18001234567")
let labeledPhoneNumber = CNLabeledValue(label: "arbitrary string", value: phoneNumber)
contact.phoneNumbers.append(labeledPhoneNumber)