#navigationbar #swiftui #navigationbaritems
#панель навигации #swiftui #элементы панели навигации
Вопрос:
Я вижу странную проблему, которую я смог воспроизвести с небольшим образцом. Если navigationBarItems
у вас установлено подробное представление, и это подробное представление является вторым представлением, помещенным в стек навигации, элементы не отображаются при переходе на страницу сведений. Вот пример:
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: MiddleTestView()) {
Text("Push View")
}
}
}
}
}
struct MiddleTestView: View {
var body: some View {
VStack {
NavigationLink(destination: TestView()) {
Text("Push Another View")
}
}
}
}
struct TestView: View {
var body: some View {
VStack {
Text("Testing 1, 2, 3")
}
.navigationBarItems(leading: Button("Test") { print("pressed") })
}
}
Если что-либо приведет TestView
к повторному рендерингу, тогда появится кнопка, например, если TestView
это делает:
struct TestView: View {
@State var hasChanges = false
var body: some View {
VStack {
Text("Testing 1, 2, 3")
Button("Toggle") { hasChanges = !hasChanges }
}
.navigationBarItems(leading: Button(hasChanges ? "Test1" : "Test2") { print("pressed") })
}
}
Затем нажатие кнопки «Переключить» один раз приведет navigationBarItems
к появлению, и они будут оставаться там до тех пор, пока представление не будет закрыто. Кроме того, если TestView
сначала отображается, а MiddleTestView
не, то проблем с navigationBarItems
. Я не вижу никаких причин для такого поведения, это похоже на довольно вопиющую ошибку, которая делает работу со стеками навигации в SwiftUI принципиально нарушенной, если я чего-то не упустил. Есть ли у кого-нибудь представление о том, что здесь происходит, или как это обойти?
Комментарии:
1. Похоже на ошибку (тот же эффект
toolbar
) — стоит отправить в Apple.2. Да, я отправил отчет через помощника по обратной связи, потому что это то, что я нашел, когда искал, как создать отчет. Не уверен, насколько они реагируют на это