web-dev-qa-db-fra.com

Swift 3 ajouter un nouveau contact avec des informations de téléphone et email

J'essaie de demander à l'utilisateur de créer un nouveau contact et de transmettre des informations. (plus précisément un téléphone et un email)

J'ai trouvé de nombreux exemples d'utilisation d'un CNMutableContact et de l'ajout d'un courrier électronique. Cependant, tout le code impliquant le CNContact me donne une erreur "Utilisation de type non déclaré". 

Comment configurer ma classe pour inviter l'utilisateur à enregistrer le contact?

13
TheMooCows237
func addPhoneNumber(phNo : String) {
  if #available(iOS 9.0, *) {
      let store = CNContactStore()
      let contact = CNMutableContact()
      let homePhone = CNLabeledValue(label: CNLabelHome, value: CNPhoneNumber(stringValue :phNo ))
      contact.phoneNumbers = [homePhone]
      let controller = CNContactViewController(forUnknownContact : contact)
      controller.contactStore = store
      controller.delegate = self
      self.navigationController?.setNavigationBarHidden(false, animated: true)
      self.navigationController!.pushViewController(controller, animated: true)
  }
}
11
Ganesh Kumar

Vous pouvez faire quelque chose comme ça.

extension ViewController: CNContactViewControllerDelegate {

    func showNewContactViewController() {

        let contactViewController: CNContactViewController = CNContactViewController(forNewContact: nil)
        contactViewController.contactStore = CNContactStore()
        contactViewController.delegate = self
        let navigationController: UINavigationController = UINavigationController(rootViewController: contactViewController)
        present(navigationController, animated: false) {
            print("Present")
        }
    }
}
2
Satish Babariya

Swift 4

import ContactsUI

implémenter délégué CNContactViewControllerDelegate

@IBAction func UserTap_Handler(_ sender: Any) {

        self.navigationController?.isNavigationBarHidden = false
        let con = CNContact()
        let vc = CNContactViewController(forNewContact: con)
        vc.delegate = self
        _ = self.navigationController?.pushViewController(vc, animated: true)
    }

    //MARK:- contacts delegates
    func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) {
        print("dismiss contact")
        self.navigationController?.popViewController(animated: true)
    }
    func contactViewController(_ viewController: CNContactViewController, shouldPerformDefaultActionFor property: CNContactProperty) -> Bool {
        return true
    }
1
Azhar