Панель инструментов с UiviewControllerRepresentable Breaks Navigation в Swiftui ios 18.4+IOS

Программируем под IOS
Ответить
Anonymous
 Панель инструментов с UiviewControllerRepresentable Breaks Navigation в Swiftui ios 18.4+

Сообщение Anonymous »

Я вижу проблему, в которой наличие какого -либо типа 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»