CNContactPickerViewController启用以禁用多项选择

问题描述

我要根据条件启用或禁用多个联系人选择。

我尝试了以下解决方

func onClickPickContact() {
        let contactPicker = CNContactPickerViewController()
        contactPicker.delegate = self
        contactPicker.displayedPropertyKeys =
            [CNContactGivennameKey,CNContactPhoneNumbersKey]
        self.present(contactPicker,animated: true,completion: nil)
    }

func contactPicker(_ picker: CNContactPickerViewController,didSelect contact: CNContact) {
        self.txtFieldFirstname.text = contact.givenname
        self.txtFieldLastname.text = contact.familyName
    }

这使我可以选择多个联系人,但是我想同时选择两种情况(单选还是根据条件进行多选)。

一旦添加了上述委托方法,就不允许仅选择单个联系人。

请让我知道是否有人知道解决方案。 预先感谢。

解决方法

您描述的行为是正确的,因为实现的委托仅允许您使用一种模式。如果尝试同时实现单个和多个联系人选择,则会在运行时收到警告。这正是您的情况。

[CNUI WARN]单联系人和多联系人委托方法 实施后,单个变体将被忽略

如果要在它们之间进行选择,则需要两个委托实现,一个用于单选,另一个用于多选。请查看以下解决方案:

Z3Exception: Symbolic expressions cannot be cast to concrete Boolean values

现在有两个代表,您可以根据自己的条件在它们之间切换。