iPadOS下NavigationView选中主列表项后返回根视图问题
当选中NavigationView主视图中的项目时,主视图会返回至根视图,但仅在之前选中过根列表中的项目时才会出现此问题。
测试环境:iPadOS
复现步骤
- 选中主列表中
isFolder = false的项目 - 接着选中主列表中
isFolder = true的项目 - 然后选中新主列表中的任意项目
实际现象
- 项目显示在详情视图中,但主视图返回至根视图
预期结果
- 项目显示在详情视图中,且主视图停留在选中项目所在的列表
复现代码
import SwiftUI import PlaygroundSupport import Observation struct ListItem { var title: String var isFolder: Bool } struct TabbarTest: View { var items: [ListItem] var body: some View { NavigationView { List { ForEach(items, id: \.title) { item in if item.isFolder { NavigationLink(destination: OtherList(items: [ ListItem(title: "11", isFolder: true), ListItem(title: "12", isFolder: false), ListItem(title: "13", isFolder: false), ListItem(title: "14", isFolder: false), ListItem(title: "15", isFolder: false), ListItem(title: "16", isFolder: false), ListItem(title: "17", isFolder: false), ListItem(title: "18", isFolder: false), ListItem(title: "19", isFolder: false), ListItem(title: "20", isFolder: false) ])) { Text(item.title) }.isDetailLink(false) } else { NavigationLink(destination: Text(item.title)) { Text(item.title) }.isDetailLink(true) } } } .listStyle(.plain) } } } struct OtherList: View { var items: [ListItem] var body: some View { List { ForEach(items, id: \.title) { item in if item.isFolder { NavigationLink(destination: OtherList(items: [ ListItem(title: "11", isFolder: true), ListItem(title: "12", isFolder: false), ListItem(title: "13", isFolder: false), ListItem(title: "14", isFolder: false), ListItem(title: "15", isFolder: false), ListItem(title: "16", isFolder: false), ListItem(title: "17", isFolder: false), ListItem(title: "18", isFolder: false), ListItem(title: "19", isFolder: false), ListItem(title: "20", isFolder: false) ])) { Text(item.title) }.isDetailLink(false) } else { NavigationLink(destination: Text(item.title)) { Text(item.title) }.isDetailLink(true) } } } } } PlaygroundPage.current.setLiveView(TabbarTest(items: [ ListItem(title: "One", isFolder: true), ListItem(title: "Two", isFolder: false), ListItem(title: "Three", isFolder: false), ListItem(title: "Four", isFolder: false), ListItem(title: "Five", isFolder: false), ListItem(title: "Six", isFolder: false), ListItem(title: "Seven", isFolder: false), ListItem(title: "Eight", isFolder: false), ListItem(title: "Nine", isFolder: false), ListItem(title: "Ten", isFolder: false) ]))
内容的提问来源于stack exchange,提问作者Manuel Berghaus
相关产品推荐
相关产品推荐

