Я пытаюсь реализовать CNContactViewDelegate
, чтобы иметь возможность показать детали CNContact
. И, видимо, я первый, кто реализовал это с SwiftUI
и получил проблемы. В любом случае, я могу видеть детали CNContact
с использованием UIViewControllerRepresentable
, но у меня есть проблема с NavigationBar
, в которой существует разрыв между изображением Contact
и StatusBar
из-за NavigationBar
и NavigationLink
Я думаю - и этот пробел отсутствует в собственном приложении Contacts
и, по-видимому, в этой ссылке , которая реализовала структуру в UIKit
.
Вот код;
struct ContactsListView: View {
@ObservedObject var contactsModel: ContactsViewModel
var body: some View {
NavigationView{
List {
//After some ForEach's and Section's
//This view is working.
NavigationLink(destination: ContactDetailView(contact: self.$contactsModel.contacts[sectionIdx].contacts[contactIdx])) {
Text(self.contactsModel.contacts[sectionIdx].contacts[contactIdx].givenName)
}
}
.navigationBarTitle("Contacts")
}
}
}
struct ContactView: UIViewControllerRepresentable {
@Binding var contact: CNContact
func makeCoordinator() -> ContactView.Coordinator {
Coordinator(self)
}
func makeUIViewController(context: UIViewControllerRepresentableContext<ContactView>) -> CNContactViewController {
let controller = CNContactViewController(for: contact)
self.navigationBarHidden(true)
return controller
}
func updateUIViewController(_ uiViewController: CNContactViewController, context: UIViewControllerRepresentableContext<ContactView>) {
print(context)
}
class Coordinator: NSObject, CNContactViewControllerDelegate {
var parent: ContactView
init(_ contactDetail: ContactView) {
self.parent = contactDetail
self.parent.navigationBarHidden(true)
}
}
}
В ContactView
оба эти self.navigationBarHidden(true)
не работают. В качестве примера проблемы приведен скриншот нативного приложения:
И вот результат моего кода;