2017-01-29 5 views
0

У меня есть задача показать экран редактирования контакта сразу во время его появления (например, 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, но он будет виден для пользователя. Как я могу решить эту проблему? Спасибо.

ответ

0

Я пришел к выводу, что WhatsApp создает для этого специальный экран. Просто я увидел тот же экран в Telegram только с измененным дизайном.

1

просто изменить пусть cnContactViewController = CNContactViewController (для: контакт)

к

пусть CVC = CNContactViewController (forNewContact: контакт)

он будет работать для вас

Смежные вопросы