我正在开发一个 SwiftUI 应用程序,首先出现警告,然后出现错误,可能是因为我忽略了这些警告。我想展示我收到的警告,希望有人能指出我可能做错的事情。
这是相关代码:
struct CustomListView: View {
var localList:[SomeManagedObject], moc:NSManagedObjectContext
@State var showingOtherView = false
func handleCustomItem(_ argument: SomeManagedObject) {
print(#function)
self.showingOtherView.toggle()
..... Do useful things .....
}
var body: some View {
List {
ForEach(self.localList) {
item in
HStack {
Spacer()
Button(action: {
self.handleCustomItem(item)
})
{
Text(item.expression!)
.foregroundColor(Color.red))
.font(.headline)
.padding(.horizontal, 11).padding(.vertical, 15)
}.sheet(isPresented: $showingOtherView) {
OtherView()
}
Spacer()
}
}
}
}
}
这是OtherView的代码:
import SwiftUI
import CoreData
struct OtherView: View {
var body: some View {
Text("Hello OtherView")
}
}
当我单击列表中的一个按钮并执行以下命令时,我可以在调试控制台中看到这些消息处理自定义项目()功能 :
处理自定义项目(_:) 2021-04-20 22:53:10.667895+0900
TheApp[9600:5758072] [演示]尝试演示
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x10529a510> 上
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x10510a310>(来自
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x10510a310>) 已经呈现
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x105299150>。 2021-04-20 22:53:10.668399+0900 应用程序[9600:5758072]
[演示] 尝试演示
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x10529b1b0> 上
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x10510a310>(来自
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x10510a310>) 已经呈现
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x105299150>。 ......2021-04-20 22:53:10.670049+0900
TheApp[9600:5758072] [演示]尝试演示
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x105118e10> 上
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x10510a310>(来自
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x10510a310>) 已经呈现
TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView:
0x105299150>。
如果有人能看到一些东西并给我一些关于我能做什么的提示,那就太好了。
Your .sheet(isPresented: $showingOtherView) {
是在里面ForEach
。当你设置showingOtherView
为真,所有的工作表ForEach
将尝试呈现。那是一大堆床单。
你想把它放在外面ForEach
.
var body: some View {
List {
ForEach(self.localList) {
item in
HStack {
Spacer()
Button(action: {
self.handleCustomItem(item)
})
{
Text(item.expression!)
.foregroundColor(Color.red))
.font(.headline)
.padding(.horizontal, 11).padding(.vertical, 15)
}
Spacer()
}
}
}
.sheet(isPresented: $showingOtherView) { /// here should be fine
OtherView()
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)