У меня есть задача показать экран редактирования контакта сразу во время его появления (например, WhatsApp), я покажу ему следующий путь.CNContactViewController setEditing true перед появлением
@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
, но он будет виден для пользователя. Как я могу решить эту проблему? Спасибо.