您好,我正在尝试建立一个界面,该界面列出所有联系人,就像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
的{{1}} View
中显示联系人。任何帮助将非常感激。
答案 0 :(得分:0)
这里有两种解决方案:https://stackoverflow.com/a/57621666/8818408
(1)可以工作,但在显示联系人列表之前会先闪烁视图。对用户而言不是很好的体验。
(2)这类作品。在显示联系人列表之前,它还会闪烁一个视图。它在前缘,后缘和底部边缘显示出意外的透明度和意外的颜色。这些可能是可以解决的。