CNLabelPhoneNumber Label Picker - PullRequest
       8

CNLabelPhoneNumber Label Picker

0 голосов
/ 23 ноября 2018

Я уже некоторое время ищу решение по этому вопросу и не могу найти что-либо для реализации этого (скриншот представлен ниже).

Я создаю пользовательский ContactsViewController, который использует фреймворк CNContact для функций CRUD.Все понятно, как их реализовать, кроме выбора номера телефона.Есть ли такая вещь, как контроллер представления выбора для этого или я должен реализовать это вручную?

Снимок экрана редактирования ярлыка номера телефона в Контактах

1 Ответ

0 голосов
/ 26 ноября 2018

Вы должны реализовать этот экран вручную.Экран на снимке экрана представляет собой UITableViewController с сгруппированным UITableView и индикатором принадлежности для галочки для выбранной ячейки.

Вот список предопределенных ярлыков телефонных номеров (из Документация разработчика Apple)):

╔════════════════════════════╦═════════════════════╗
║           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 ):

Swift

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)
...