CNContactViewController setEditing true before appear
CNContactViewController setEditing true before appear
我有个任务是在他出现的时候(比如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
方法中起作用,但它会对用户可见。我怎么解决这个问题?谢谢。
我得出的结论是 WhatsApp 为此创建了一个自定义屏幕。只是我在 Telegram 中看到了相同的屏幕,只是修改了设计。
只需更改 let cnContactViewController = CNContactViewController(for: contact)
到
let cvc = CNContactViewController(forNewContact: contact)
它会为你工作
我有个任务是在他出现的时候(比如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
方法中起作用,但它会对用户可见。我怎么解决这个问题?谢谢。
我得出的结论是 WhatsApp 为此创建了一个自定义屏幕。只是我在 Telegram 中看到了相同的屏幕,只是修改了设计。
只需更改 let cnContactViewController = CNContactViewController(for: contact)
到
let cvc = CNContactViewController(forNewContact: contact)
它会为你工作