ContactsUI: как показать только определенные поля при создании нового контакта на iOS?
Цель состоит в том, чтобы представить только определенные поля при добавлении нового контакта на iOS.
Например, предположим, что вы хотите показать и изменить только адрес, номер телефона и имя для контакта.
Код ниже не работает. Все поля все еще появляются.
Перетащите этот контроллер представления в проект, и вы увидите, что все поля контактов по-прежнему представлены, несмотря на использование displayedPropertyKeys.
Как бы вы это сделали?
import Foundation
import Contacts
import ContactsUI
class ContactViewController: UIViewController, CNContactViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
func createContact() {
let contactController = CNContactViewController(forNewContact: nil)
contactController.delegate = self
contactController.allowsEditing = true
contactController.allowsActions = true
contactController.displayedPropertyKeys = [CNContactPostalAddressesKey, CNContactPhoneNumbersKey, CNContactGivenNameKey]
contactController.view.layoutIfNeeded()
present(UINavigationController(rootViewController: contactController), animated:true)
}
// =============================================================================================================
// MARK: IB Actions
// =============================================================================================================
@IBAction func newContactButtonDidTap(_ sender: UIButton) {
createContact()
}
// =============================================================================================================
// MARK: UIViewController Functions
// =============================================================================================================
override var prefersStatusBarHidden: Bool {
return true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
1 ответ
Позвольте мне приложить скриншот CNContactViewController
объявление класса: CNContactViewController
Как вы можете видеть на картинке, там есть @note, который говорит: "Все свойства видны при редактировании контакта". Поэтому я думаю, что при создании контакта рассматривается особый случай редактирования контакта.
Я использую displayedPropertyKeys
просто отображать контакт и работает хорошо в этом случае.
Надеюсь, это поможет вам!