Список контактов из приложения "Контакты" в 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 выше. Если кто-нибудь может предложить решение, которое полностью работает, это было бы здорово.

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