【发布时间】:2020-05-06 13:41:03
【问题描述】:
在 Xcode 版本 11.4.1 (11E503a) 中设置 NavigationLink 时:
NavigationView {
vm.isShowingBarCharts ? Text("Charts") : Text("List")
}.navigationBarItems(
NavigationLink(destination: LEditView(vm: LEditViewModel())) {
LIcons.addEntry
.resizable()
.frame(width: 20, height: 20)
}
)
vm.isShowingBarCharts 是 Bool 类型的 Published,如果 vm.isShowingBarCharts 被翻转,视图会重新绘制(如预期的那样)。我不明白的是,为什么要实例化多个 LEditViewModel() 实例?
如何避免?
【问题讨论】:
-
不要在导航栏中使用
NavigationLink- 只能在NavigationView内部使用 -
将按钮移出 .navigationBarItems() 并没有改变任何东西。
-
在创建父视图并且从未释放(例如在后退按钮单击时)时初始化视图模型也很奇怪。无法绕开它......
-
@Asperi 这里是一个示例项目。 github.com/andriansergheev/BrokenNavigationLinkSwiftUI