2016-12-24 72 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 { 

    } 
相關問題