NavigationLink修改isActive仍偶尔失效?问题排查与解决
问题现象
修改isActive绑定变量后,NavigationLink未触发跳转,但滚动List到底部时会自动触发导航。
原代码示例:
NavigationView { List { //.... some views } NavigationLink(destination: destinationView(), isActive: $isShowDestination) { EmptyView() } }
问题原因
当List包含大量视图时,滚动到底部会触发类似onAppear的视图生命周期事件,此时才会让NavigationLink的状态生效,导致手动修改isShowDestination变量时无法触发导航。
解决方案
通过添加VStack将NavigationLink置于List外部,确保NavigationLink的状态能及时响应变量变化:
修改后代码示例:
NavigationView { VStack { List { //.... some views } NavigationLink(destination: destinationView(), isActive: $isShowDestination) { EmptyView() } } }
内容的提问来源于stack exchange,提问作者Mushrankhan
相关产品推荐
相关产品推荐

