iossearchswift2cncontactcontactpicker

iOS Swift CNContactPickerViewController search contact and add to selection


I am using iOS 9 and Swift 2.2

I have implemented iOS inbuilt CNContactPickerViewController using CNContactPickerDelegate to get the contact numbers,

In the CNContactPickerViewController Screen, when I click on search field on top and search for a name, I need to add that name to my selection but nothing happens after tapping the contact.

I searched everywhere and dint find any solution to this

Do I need to add anything to my code or is it a iOS 9 bug

@IBAction func AddBtnKlkFnc(sender: AnyObject)
{
    let contactPicker = CNContactPickerViewController()
    contactPicker.delegate = self
    contactPicker.displayedPropertyKeys =
        [CNContactPhoneNumbersKey]
    self.presentViewController(contactPicker, animated: true, completion: nil)
}

func contactPicker(picker: CNContactPickerViewController, didSelectContacts ContctAryVar: [CNContact])
{
    for ContctVar in ContctAryVar
    {
        let ContctDtlVar = ContctDtlCls()
        ContctDtlVar.ManNamVar = CNContactFormatter.stringFromContact(ContctVar, style: .FullName)!

        for ContctNumVar: CNLabeledValue in ContctVar.phoneNumbers
        {
            var MobNumVar  = ((ContctNumVar.value as! CNPhoneNumber).valueForKey("digits") as? String)!
            if(MobNumVar.Len() > 10)
            {
                MobNumVar = MobNumVar.GetLstSubSrgFnc(10)
            }
            ContctDtlVar.MobNumVar = MobNumVar
            ContctDtlAryVar.append(ContctDtlVar)
        }
    }
}

Solution

  • Use this updated code and  
    
    
       @IBAction func AddBtnKlkFnc(sender: AnyObject)
        {
            let contactPicker = CNContactPickerViewController()
            contactPicker.delegate = self
            contactPicker.displayedPropertyKeys =
                [CNContactPhoneNumbersKey]
            self.presentViewController(contactPicker, animated: true, completion: nil)
        }
    
        func contactPicker(picker: CNContactPickerViewController, didSelectContacts ContctAryVar: [CNContact])
        {
            for ContctVar in ContctAryVar
            {
                let ContctDtlVar = ContctDtlCls()
                ContctDtlVar.ManNamVar = CNContactFormatter.stringFromContact(ContctVar, style: .FullName)!
    
                for ContctNumVar: CNLabeledValue in ContctVar.phoneNumbers
                {
                    var MobNumVar  = ((ContctNumVar.value as! CNPhoneNumber).valueForKey("digits") as? String)!
                    if(MobNumVar.Len() > 10)
                    {
                        MobNumVar = MobNumVar.GetLstSubSrgFnc(10)
                    }
                    ContctDtlVar.MobNumVar = MobNumVar
                    ContctDtlAryVar.append(ContctDtlVar)
                }
            }
    
         delegate.didFetchContacts([contact])
        navigationController?.popViewControllerAnimated(true)
        }