Список контактов из приложения Контакты в SwiftUI - PullRequest
2 голосов
/ 07 февраля 2020

Привет. Я пытаюсь создать интерфейс, в котором перечислены все контакты, как в приложениях 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 Ответ

0 голосов
/ 23 марта 2020

Здесь есть два решения: { ссылка }

(1) работает, но мигает вид перед отображением списка контактов. Не очень хороший опыт для пользователя.

(2) рода работ. Он также мигает, прежде чем показывать список контактов. Он показывает с неожиданной прозрачностью и неожиданными цветами вдоль передних, задних и нижних краев. Это может быть возможно разобраться.

Я только начинаю пытаться решить проблемы с # 2 выше. Если кто-то может предложить решение, которое работает полностью, это было бы замечательно. Screen shot of #2

...