2016-12-24 58 views
0

你好我是iOS设计和Swift的新手,我试图实现一个简单的联系人选择器,允许用户简单地选择一个联系人。我在视图控制器中有一个按钮,并且视图控制器符合CNContactPickerDelegate,但是当我运行应用程序并使用选取器时,无论我在选取器中按什么,我的contactPickerDidCancel函数和我的contactPicker函数都不会被调用。据我所知,选择器应该调用我写的功能,当我点击他不取消按钮或选择器内的联系人。这是错的吗?任何帮助或想法都会很棒!谢谢!contactPickerDidCancel和contactPicker函数永远不会被调用

更新:已解决。这是一个简单的语法错误。在这两个函数中,我都没有在“picker”之前加下划线。

@IBAction func addContactPressed(_ sender: Any) { 

    let contactPickerViewController = CNContactPickerViewController() 

    contactPickerViewController.delegate = self 

    contactPickerViewController.predicateForEnablingContact = NSPredicate(format: "[email protected] > 0", argumentArray: nil) 

    contactPickerViewController.predicateForSelectionOfProperty = 
     NSPredicate(format: "key == 'phoneNumbers'", argumentArray: nil) 

    contactPickerViewController.displayedPropertyKeys = [CNContactEmailAddressesKey, CNContactPhoneNumbersKey] 

    self.present(contactPickerViewController, animated: true, completion: nil) 

} 


func contactPickerDidCancel(picker: CNContactPickerViewController) { 
    print("Cancelled picking a contact.") 
} 

func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) { 
    print("Selected a contact.") 
    if contact.isKeyAvailable(CNContactPhoneNumbersKey) { 
     print(contact.phoneNumbers) 
    } 
    else { 
     print("No phone numbers are available.") 
    } 
} 
+0

您的课程是否符合该代表? – Shachar

回答

0

将联系人选择器移到该函数的外部,一旦超出该范围,就会丢失对它的引用。您可以将其设置为可选项,然后在点击按钮后进行初始化。

0

你让你的视图控制器符合CNContactPickerDelegate

class MyViewController: UIViewController, CNContactPickerDelegate { 

    } 
相关问题