SwiftUI 模式表在关闭后重新打开
Posted
技术标签:
【中文标题】SwiftUI 模式表在关闭后重新打开【英文标题】:SwiftUI Modal Sheet Re-Opening After Dismiss 【发布时间】:2019-10-11 13:58:42 【问题描述】:我在导航视图中有一个列表,带有一个尾随导航按钮以添加列表项。该按钮打开一个模式表。当我关闭工作表(通过将其拉下)时,工作表会自动再次弹出,我无法返回第一个屏幕。这是我的代码。
struct ListView: View
@ObservedObject var listVM: ListViewModel
@State var showNewItemView: Bool = false
init()
self.listVM = ListViewModel()
var body: some View
NavigationView
List
ForEach(listVM.items, id: \.dateCreated) item in
HStack
Text(item.name)
Spacer()
Image(systemName: "arrow.right")
.navigationBarTitle("List Name")
.navigationBarItems(trailing: AddNewItemBtn(isOn: $showNewItemView))
struct AddNewItemBtn: View
@Binding var isOn: Bool
var body: some View
Button(
action: self.isOn.toggle() ,
label: Image(systemName: "plus.app") )
.sheet(
isPresented: self.$isOn,
content: NewItemView() )
我收到此错误:
警告:尝试呈现 <_ttgc7swiftuip13> 已经呈现(空)
我尝试在按钮本身的“onDismiss”中切换布尔值,但这也不起作用。有什么想法吗?
【问题讨论】:
【参考方案1】:原来将按钮放在 navigationBarItems(trailing:) 修饰符中是问题所在。我只是将按钮放在列表本身而不是导航栏中,它工作得很好。一定是某种错误。
【讨论】:
您使用的是什么版本的 Xcode?这应该工作 @Edward 非常感谢您帮助我弄清楚我使用的是旧版本。我有 11 个 GM。没有注意到11.2已经出来了。该死的测试版。 可以确认这是一个错误。我刚升级到Xcode 11.1,问题就解决了。以上是关于SwiftUI 模式表在关闭后重新打开的主要内容,如果未能解决你的问题,请参考以下文章