我有这样的事情:
import SwiftUI
struct Overview: View {
@ObservedObject var firstArray = FirstArray()
var body: some View {
Group{
ScrollView(){
ForEach(self.firstArray.array, id: \.self){ array in
SubView(array: array)
}
Spacer()
}
}.navigationBarTitle("Overview")
}
}
struct SubView: View {
@State var array
var body: some View {
NavigationLink(destination: DetailInfo(array: array){
Image(systemName: "pencil.circle").resizable().frame(width: 30, height: 30)
}
}.navigationBarTitle("SubView")
}
struct DetailInfo: View {
@State var array
var body: some View {
List(){
ForEach(0..<self. array.count, id: \.self){item in
Text(item)
}.onDelete(perform: deleteItem)
}
}
func deleteItem(at offsets: IndexSet) {
self.array.remove(atOffsets: offsets)
}
}
当我删除一个项目时DetailInfo
它让我回到Overview
。这是为什么?是不是因为ForEach中的“清爽”Overview
。我怎样才能留在DetailInfo
?当省略id: \.self
in Overview
它没有表现出这种行为。
是的,这是因为所有内容都会刷新,因此详细视图和导航链接将不再存在,因此应用程序“跳”回根视图
“正常”解决方案是:不要删除详细视图中的项目,而是删除列表中的项目 - 那么就没有问题,您也可以从 SwiftUI 免费获得漂亮的动画
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)