【发布时间】:2021-12-07 09:25:16
【问题描述】:
我有一个孩子 NavigationView 不尊重修饰符的问题,您可以尝试使用以下单个代码文件工作应用程序查看:
import SwiftUI
@main
struct NavigationView_IssueApp: App {
@StateObject var viewState = ViewState()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(viewState)
}
}
}
struct ContentView: View {
@EnvironmentObject var viewState: ViewState
var body: some View {
ZStack {
Button("Tap Me") {
viewState.showAllCards.toggle()
}
if !viewState.showAllCards {
ChildNavigationView()
}
}
}
}
struct ChildNavigationView: View {
@EnvironmentObject var viewState: ViewState
var body: some View {
NavigationView {
CardDetailView()
.navigationBarTitleDisplayMode(.inline)
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
struct CardDetailView: View {
@EnvironmentObject var viewState: ViewState
var body: some View {
Color.yellow
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button(action: { viewState.showAllCards.toggle() }) {
Text("Done")
}
}
}
}
}
class ViewState: ObservableObject {
init() {
print("init ViewState")
}
@Published var showAllCards = true
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.environmentObject(ViewState())
}
}
在画布预览中看起来不错。
在 iOS 14 设备上看起来不错。
在 iOS 15 设备上不支持修饰符。
有人知道这种奇怪的行为吗?
【问题讨论】: