CNContactViewController не предоставляет кнопку Готово

Я использую CNContactViewController для ввода информации для нового клиента. Но как бы я ни представлял CNContactViewController, я получаю только кнопку "Отмена" в верхней панели... Нет кнопки "Готово" или иного способа отклонить контроллер.

Как включить кнопку "Готово" (или любой другой способ для пользователя принять вновь введенную контактную информацию)?

Я видел этот вопрос, но не помог с кнопкой Готово... CNContactViewController делает что-то странное с цепочкой респондента

Спасибо

1 ответ

Вы можете подклассCNContactViewControllerдобавитьdoneкнопку наnavigationItem.

Что-то вроде этого:

      import ContactsUI

class ContactDetailsViewController: CNContactViewController {
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        updateNavigationItem()
    }

    override func setEditing(_ editing: Bool, animated: Bool) {
        super.setEditing(editing, animated: animated)

        updateNavigationItem()
    }

    private func updateNavigationItem() {
        if !isEditing {
            // add a 0.5 seconds delay to add button after the editing animation finishes
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
                self.navigationItem.leftBarButtonItem = .init(
                    barButtonSystemItem: .done,
                    target: self,
                    action: #selector(self.doneTapped)
                )
            }
        }
    }

    @objc private func doneTapped() {
        dismiss(animated: true)
    }
}

Чтобы использовать этот класс, убедитесь, чтоContactDetailsViewControllerвстроен вUINavigationController.

Хотя я так поздно отвечаю, но я надеюсь, что это поможет вам или кому-то еще.

Другие вопросы по тегам