SwiftUI 中联系人应用程序的联系人列表

Far*_*ruk 5 uiviewcontroller swift cncontactpicker contactsui 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
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

以及 SwiftUI 文件;

struct ContactsView: View {
    var body: some View {
        ContactsViewController()
    }
}
Run Code Online (Sandbox Code Playgroud)

提醒一下,我正在其他文件中调用ContactsView内部。所以我想在属于 的一部分中显示联系人。任何帮助将非常感激。TabViewSwiftUISwiftUI ViewTabView

小智 1

这里有两个解决方案:/sf/answers/4033516651/

(1) 有效,但在显示联系人列表之前会闪烁一个视图。对于用户来说不是一个好的体验。

(2)作品类别。在显示联系人列表之前,它还会闪烁一个视图。它沿前缘、后缘和底部边缘显示出意想不到的透明度和意想不到的颜色。这些或许都可以解决。

我刚刚开始尝试解决上面#2 的问题。如果有人能提供一个完全有效的解决方案,那就太好了。#2 的屏幕截图