Список контактов из приложения "Контакты" в SwiftUI
Привет, я пытаюсь создать интерфейс, в котором будут перечислены все контакты, как в Contacts
а также Phone
приложение с тем же UI
. То, что я пробовал до сих пор, ниже. В основном я пытался реализоватьCNContactPickerViewController
от ContactsUI
используя UIViewControllerRepresentable
. Однако я получаю пустую белую страницу.
struct ContactsViewController: UIViewControllerRepresentable {
func makeUIViewController(context: UIViewControllerRepresentableContext<ContactsViewController>) -> CNContactPickerViewController {
let controller = CNContactPickerViewController()
controller.delegate = context.coordinator
controller.displayedPropertyKeys = [CNContactGivenNameKey]
return controller
}
func updateUIViewController(_ uiViewController: CNContactPickerViewController, context: UIViewControllerRepresentableContext<ContactsViewController>) {
print("updating")
}
func makeCoordinator() -> Coordinator {
return Coordinator(self)
}
class Coordinator: NSObject, CNContactPickerDelegate {
var parent: ContactsViewController
init(_ contactsViewController: ContactsViewController) {
self.parent = contactsViewController
}
}
}
И файл SwiftUI;
struct ContactsView: View {
var body: some View {
ContactsViewController()
}
}
Напоминание: я звоню ContactsView
Внутри TabView
в каком-то другом SwiftUI
файл. Поэтому я хочу показать контакты вSwiftUI
View
это часть TabView
. Любая помощь могла бы быть полезна.
1 ответ
Здесь есть два решения: /questions/50188683/uiviewcontrollerrepresentable-i-cncontactpickerviewcontroller/50188686#50188686
(1) работает, но перед отображением списка контактов мигает представление. Не очень хороший опыт для пользователя.
(2) род работ. Он также мигает представлением перед отображением списка контактов. Он демонстрирует неожиданную прозрачность и неожиданные цвета по передним, задним и нижним краям. Возможно, в этом можно будет разобраться.
Я только начинаю пытаться решить проблемы с #2 выше. Если кто-нибудь может предложить решение, которое полностью работает, это было бы здорово.