为什么更新时我的视图会返回到父级ObservedObject
?我知道它的更新会重新绘制视图(大概也是 ),ParentView
但坦率地说,我正在查看ChildView
我不关心 的外观ParentView
。
如果显示的内容直接来自ParentView
但它与一个类相关联,我会理解该行为。这是苹果有意为之的行为吗?
我应该如何在NavigationLink
不弹出视图的情况下操作由 a 调用的视图中的数据?
为什么这个流行音乐是被迫的?有没有办法“忍住”?
我尝试过这样的方法:
SwiftUI: @ObservedObject 重绘每个视图,但没有帮助。tap
当我不再删除物品时,情况变得更糟。
我有一个这样的代码构造:
家长观点:
struct ContentView: View {
@ObservedObject var data = Data()
var body: some View {
NavigationView {
VStack() {
ForEach(self.data.myArray, id: \.self) { subArray in
NavigationLink(destination: Child(data: self.data, mySubArray: subArray)) {
Text(subArray[0]).padding().background(Color.yellow)
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
孩子:
struct Child: View {
@ObservedObject var data: Data
var mySubArray: Array<String>
var body: some View {
ForEach(self.mySubArray, id: \.self) { str in
Text(str).padding().background(Color.yellow)
.onTapGesture {
self.data.removeFromSubArray(index: self.data.myArray.firstIndex(of: self.mySubArray) ?? 0, remove: str)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
和一个 ObservableObject:
class Data: ObservableObject {
@Published var myArray: Array<Array<String>> = []
init() {
self.myArray.append(["A", "B", "C"])
self.myArray.append(["D", "E", "F"])
self.myArray.append(["G", "H", "I"])
}
func removeFromSubArray(index: Int, remove: String) {
if self.myArray.count-1 >= index {
if let subIndex = self.myArray[index].firstIndex(of: remove) {
self.myArray[index].remove(at: subIndex)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
625 次 |
最近记录: |