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

时间:2020-02-07 15:07:15

标签: swift uiviewcontroller swiftui cncontactpicker contactsui

您好,我正在尝试建立一个界面,该界面列出所有联系人,就像ContactsPhone应用程序具有相同的UI。到目前为止,我已经尝试过以下内容。基本上,我尝试使用CNContactPickerViewControllerContactsUI实现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的{​​{1}} View中显示联系人。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

这里有两种解决方案:https://stackoverflow.com/a/57621666/8818408

(1)可以工作,但在显示联系人列表之前会先闪烁视图。对用户而言不是很好的体验。

(2)这类作品。在显示联系人列表之前,它还会闪烁一个视图。它在前缘,后缘和底部边缘显示出意外的透明度和意外的颜色。这些可能是可以解决的。

我刚刚开始尝试解决上述#2的问题。如果有人可以提供完全有效的解决方案,那就太好了。Screen shot of #2