web-dev-qa-db-ja.com

Swift 3電話とメールの情報で新しい連絡先を追加します

新しい連絡先を作成して情報を渡すようにユーザーに要求しています。 (具体的には電話とメール)

CNMutableContactを使用してメールを追加する例を数多く見つけました。ただし、CNContactに関連するコードを使用すると、「宣言されていない型の使用」エラーが発生します。

連絡先を保存するようにユーザーに要求するようにクラスを設定するにはどうすればよいですか?

14
TheMooCows237
import ContactsUI

//add CNContactViewControllerDelegate to your ViewController
class ViewController: UIViewController , CNContactViewControllerDelegate {

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)
  }
}
15
Ganesh Kumar

このようなことができます。

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")
        }
    }
}
3
Satish Babariya

Swift 4

import ContactsUI

デリゲートを実装する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
    }
2
Azhar