出现之前CNContactViewController setEditing为true

时间:2017-01-29 14:37:59

标签: ios swift contacts cncontactviewcontroller

我有一个任务是在他出现时立即显示联系人编辑屏幕(例如WhatsApp),我会用以下方式向他展示。

   @objc private func presentContactEditController() {
        guard var contact = contactModel.contact else { return }
        if !contact.areKeysAvailable([CNContactViewController.descriptorForRequiredKeys()]) {
            do {
                let contactStore = CNContactStore()
                contact = try contactStore.unifiedContact(withIdentifier: contact.identifier, keysToFetch: [CNContactViewController.descriptorForRequiredKeys()])
            } catch {
                debugPrint("presentContactEditController error", error.localizedDescription)
            }
        }
        let cnContactViewController = CNContactViewController(for: contact)
        cnContactViewController.delegate = self
        cnContactViewController.setEditing(true, animated: false)

        let contactNaviController = UINavigationController(rootViewController: cnContactViewController)
        present(contactNaviController, animated: true, completion: nil)
    }

但是有一个屏幕上有关于此联系人的信息。所以我尝试通过CNContactViewController的继承人,不同的方法ViewController生命周期来做到这一点,但它只适用于viewDidAppear方法,但它对用户是可见的。我怎么解决这个问题?谢谢。

2 个答案:

答案 0 :(得分:1)

只需更改let cnContactViewController = CNContactViewController(for:contact)

让cvc = CNContactViewController(forNewContact:contact)

它适合你

答案 1 :(得分:0)

我得出结论,WhatsApp为此目的创建了一个自定义屏幕。只是我在电报中看到了相同的屏幕,只有改进的设计。