SwiftUI中使用List搭配NavigationLink时如何移除列表行分隔线?
当列表项被NavigationLink包裹时,.listRowSeparator(.hidden)作用在内部子视图上会失效,你可以尝试以下几种方法:
将分隔线隐藏修饰符移到NavigationLink上
把.listRowSeparator(.hidden)直接应用在NavigationLink本身,而不是它包裹的子视图:List { ForEach(listVM.tasks, id: \.id) { task in NavigationLink(destination: TaskDetailView()) { TaskListItemView() } .listRowSeparator(.hidden) } } .listStyle(.plain)通过UIKit外观全局临时隐藏分隔线
如果上述方法无效,可以借助UITableView的外观设置,在视图出现时隐藏分隔线,消失时恢复默认,避免影响其他列表:List { ForEach(listVM.tasks, id: \.id) { task in NavigationLink(destination: TaskDetailView()) { TaskListItemView() } } } .listStyle(.plain) .onAppear { UITableView.appearance().separatorStyle = .none } .onDisappear { UITableView.appearance().separatorStyle = .singleLine }用ScrollView+LazyVStack替代List
放弃使用List,改用ScrollView包裹LazyVStack,完全自定义列表结构,默认就不会有分隔线:ScrollView { LazyVStack(spacing: 0) { ForEach(listVM.tasks, id: \.id) { task in NavigationLink(destination: TaskDetailView()) { TaskListItemView() } } } }
内容的提问来源于stack exchange,提问作者Joe Huang
相关产品推荐
相关产品推荐

