通过@StateObject进行简单的SwiftUI模式演示和关闭 Xcode 12 beta 6(12A8189n) iPhone 11、iOS 14.0模拟器
在给定的代码示例中,通过@StateObject进行简单的SwiftUI模式演示和关闭 Xcode 12 beta 6(12A8189n) iPhone 11、iOS 14.0模拟器,ios,swiftui,Ios,Swiftui,在给定的代码示例中,CreateSomethingView的表示方式有效,但是取消它不起作用。我特别感兴趣的是使用@StateObject并完全避免@State来实现这一点 导入快捷界面 @主要 结构ModalPresentationApp:App{ var body:一些场景{ 窗口组{ ContentView() } } } 最终类ContentModel:ObservableObject{ @出版 var isPresenting=false } 结构ContentView:View{ @
CreateSomethingView
的表示方式有效,但是取消它不起作用。我特别感兴趣的是使用@StateObject
并完全避免@State
来实现这一点
导入快捷界面
@主要
结构ModalPresentationApp:App{
var body:一些场景{
窗口组{
ContentView()
}
}
}
最终类ContentModel:ObservableObject{
@出版
var isPresenting=false
}
结构ContentView:View{
@状态对象
var contentModel=contentModel()
var body:一些观点{
导航视图{
文本(“内容视图”)
.工具栏{
工具栏项(位置:。导航栏栏栏){
按钮(操作:{
contentModel.isPresenting.toggle()文件
},标签:{
图像(系统名称:“plus.circle”)
})
.sheet(显示:$contentModel.isPresenting){
CreateSomethingView(isPresented:$contentModel.isPresenting)
}
}
}
}
}
}
结构CreateSomethingView:View{
@装订
表示变量:Bool
var body:一些观点{
导航视图{
文本(“CreateSomethingView”)
.工具栏{
工具栏项(位置:.navigationBarLeading){
按钮(操作:{
isPresented=false
},标签:{
图像(系统名称:“xmark.circle.fill”)
})
}
}
}
}
}
只需将工作表附加到适当的位置(根据经验,任何*条都不是视图间绑定的好地方)
这是修理。使用Xcode 12b5/iOS 14进行准备和测试
var body: some View {
NavigationView {
Text("ContentView")
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button(action: {
contentModel.isPresenting = true
}, label: {
Image(systemName: "plus.circle")
})
}
}
}
.sheet(isPresented: $contentModel.isPresenting) {
CreateSomethingView(isPresented: $contentModel.isPresenting)
}
}
这确实有效。奇怪的是,一个普通的
@状态私有变量出现了:Bool
与工具栏项中的按钮上附加的.sheet()
一起工作。