SwiftUI 列表行分隔符样式无法在导航中正常工作
Posted
技术标签:
【中文标题】SwiftUI 列表行分隔符样式无法在导航中正常工作【英文标题】:SwiftUI list line separatorStyle not work correctly with navigation 【发布时间】:2019-12-10 03:55:19 【问题描述】:我尝试在 2 个视图上隐藏和显示分隔线 我实现的第一个视图如下
struct FirstView: View
var body: some View
NavigationView
VStack
List
Text("test1")
Text("test2")
.onAppear UITableView.appearance().separatorStyle = .none
.onDisappear UITableView.appearance().separatorStyle = .singleLine
NavigationLink(destination: NextView())
Text("next view")
.navigationViewStyle(StackNavigationViewStyle())
这将在 FirstView 上不显示任何行。 当导航到也有列表的 NextView 时,不会显示单独的行。 之后导航回 FirstView 显示单独的行。
struct NextView: View
var body: some View
List
Text("test1")
Text("test2")
我不确定是这个错误还是我在某处编码错误。
【问题讨论】:
您是否尝试在 NextView 列表中添加 .onAppear UITableView.appearance().separatorStyle = .singleLine 我尝试添加它并显示行分隔符,但是当导航回 firstView 行分隔符时仍然显示。 这里使用了未记录的解决方法(访问内部 UITableView),带有未记录的假设(onAppear/onDisappear 的行为),那么为什么它的行为应该符合预期,因为它是有问题的?只是想... 如果是这种情况,隐藏分隔线的正确方法是什么? 【参考方案1】:在列表出现之前在代码中的任何位置添加UITableView.appearance().separatorColor = .clear
应该可以工作。
init()
// To remove only extra separators below the list:
UITableView.appearance().tableFooterView = UIView()
// To remove all separators including the actual ones:
UITableView.appearance().separatorStyle = .none
var body: some View
List
Text("Item 1")
Text("Item 2")
Text("Item 3")
【讨论】:
问题是当导航回到 firstview 时,分隔线仍然出现。 @AchiraTrakansutleart 比你应该使用清晰的颜色以上是关于SwiftUI 列表行分隔符样式无法在导航中正常工作的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI嵌入Stack样式导航视图(NavigationView)中List显示怪异的解决
SwiftUI - 列表行分隔符插入,如 iOS 设置应用程序