我在SwiftUI Mac OSX应用程序中使用了导航视图。我有一个列表视图来选择“人员”,然后在“人员详细信息”中显示其属性。一切正常。但是,我正在向PersonDetail View
中的绑定发送状态。
这很好,但是每次单击新行时,我都想将状态s_selectedView
重置为0
。
是否有一个NavigationView更新事件?我尝试在PersonDetail视图中使用onAppear()
事件,但是该事件仅被调用一次。我看到的唯一选择是将状态推向List
,然后在“表格视图”的tapGesture
上进行更改。
那是我的导航视图代码:
NavigationView {
PersonList(selectedPerson: $selectedPerson)
if selectedPerson != nil {
PersonDetail(person: selectedPerson!, s_currentView: self.$s_selectedView)
//Here I would need a event, for appear / update
//.onAppear
//{
//only called once
//}
}
}
这是我在上面同一视图中的绑定:
@State var s_selectedView : Int = 0
每当在列表中按下新项目时,我都希望将该变量重置为0。
TL:DR
是否仅对某州的onAppear
具有类似update
的功能?问题是我的视图不再出现(onAppear
没有被调用),只是数据由于@State
事件而改变。我怎么能赶上那个事件?
答案 0 :(得分:2)
您可以尝试以下操作-使用代理绑定到选定的人,一旦选定的人更改,就会重置您的状态:
(从头开始-未测试)
NavigationView {
PersonList(selectedPerson: Binding<Type_Of_Selected_Person>(get: {
self.selectedPerson
}, set: {
self.selectedPerson = $0
self.s_selectedView = 0
}))