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
.
Хотя я так поздно отвечаю, но я надеюсь, что это поможет вам или кому-то еще.