Я вижу проблему, в которой наличие какого -либо типа UiviewControllerRepresentable на панели инструментов Swiftui заставляет навигацию сломаться. И навигация назад больше не работает (кнопка на спине меняется, как если бы была предпринята некоторая навигация, но экран не обновляется).
Это только проблема, когда задействована панель инструментов (в моем примере UiviewcontrollerReerResentable находится в фоновом режиме, но это может быть также основным представлением в инструменте. Помещение UiviewControllerRepresentable в любом месте, в моей точке зрения, не влияет на навигацию. В гостях .. < /p>
Это никогда не было проблемой раньше, но, поскольку iOS 18.4+ мы внезапно видим, что это происходит, и я не смог выяснить, почему. (Я вижу, что это происходит как на симуляторах, так и на реальных устройствах:/)
Это ошибка или я делаю здесь что -то не так? И как я бы обошел это? У меня есть какой-то пользовательский код UIKIT, который решает некоторые ограничения Swiftui, поэтому предпочтительно я могу продолжать использовать эти реализации uiviewControllerRepresentable .import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLinkView(layer: 1)
}
}
struct NavigationLinkView: View {
let layer: Int
var body: some View {
NavigationLink("Navigate") {
NavigationLinkView(layer: layer + 1)
}
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
Image(uiImage: .checkmark)
.background(UIViewControllerRepresentableView()) // This causes navigation problems..
}
}
.navigationTitle("Layer \(layer)")
}
}
}
private struct UIViewControllerRepresentableView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> UIViewControllerRepresentableViewController { UIViewControllerRepresentableViewController() }
func updateUIViewController(_ uiViewController: UIViewControllerRepresentableViewController, context: Context) {}
}
private final class UIViewControllerRepresentableViewController: UIViewController {
init() { super.init(nibName: nil, bundle: nil) }
@available(*, unavailable)
required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") }
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... i-ios-18-4
Панель инструментов с UiviewControllerRepresentable Breaks Navigation в Swiftui ios 18.4+ ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Панель инструментов с UiviewControllerRepresentable Breaks Navigation в Swiftui ios 18.4+
Anonymous » » в форуме IOS - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-