Swiftui 隐藏披露箭头
Posted
技术标签:
【中文标题】Swiftui 隐藏披露箭头【英文标题】:Swiftui hide disclosure arrow 【发布时间】:2020-02-10 11:59:23 【问题描述】:我有这个观点
NavigationView
GeometryReader geometry in
List
ForEach(self.viewModel.items) item in
HStack(spacing: 0, content:
ZStack
RowItemView(data: item.FirstItem)
NavigationLink(destination: CustomView(data: item.FirstItem))
EmptyView()
.frame(width: geometry.size.width / 2, alignment: .center)
if (item.SecondItem != nil)
ZStack
RowItemView(data: item.SecondItem!)
NavigationLink(destination: CustomView(data: item.SecondItem!))
EmptyView()
)
.listRowInsets(EdgeInsets())
我想隐藏 NavigationView 的公开箭头。
我尝试添加.buttonStyle(PlainButtonStyle())
或向navigationLink 添加负尾随,但它没有改变。
我已经阅读了this question 和this one,但它们在我的情况下不起作用,可能是因为我正在创建一个网格而不是一个简单的列表。
【问题讨论】:
【参考方案1】:在这种情况下,可能的方法是使用零帧,如下所示
NavigationLink(destination: CustomView(data: item.FirstItem))
EmptyView()
.frame(width: 0)
【讨论】:
您好,感谢您的回复。它不起作用:-(箭头移动到视图的中心。 @LucaFongaro,这很奇怪。有没有特定的环境?我用 Xcode 11.2 / ios 13.2 对其进行了测试,它可以工作。 嗨。我有 XCode 11.3.1。箭头仍然显示在预览和设备上(iPhone 7 / iOS 13.3.1)问题可能出在这行代码.listRowInsets(EdgeInsets())
如果我删除它或传递一个非零边缘它可以工作(也不是' t 必须将框架设置为 0 宽度)我希望 Apple 将创建一个简单的 API 来隐藏箭头:-/ 编辑使用此 listRowInsets(EdgeInsets.init(top: 8, leading: 0, bottom: 8, trailing: 0))
它可以工作。谢谢你的帮助。你让我朝着正确的方向前进【参考方案2】:
感谢@Asperi,我发现了问题所在。
listRowInsets 中的 EdgeInsets 为零时,箭头仍会显示。
所以我创造了这个技巧(适用于 Xcode 13.3.1)
List
ForEach(self.viewModel.items) item in
//code for creating the row
.listRowInsets(EdgeInsets.init(top: 8, leading: 0, bottom: 8, trailing: 0))
为 both 顶部和底部设置一个值。
我不知道这是否是摆脱那个烦人的箭头的正确方法,但对于我的应用程序来说它可以工作:-)
【讨论】:
以上是关于Swiftui 隐藏披露箭头的主要内容,如果未能解决你的问题,请参考以下文章
没有 NavigationLink 的 SwiftUI 列表披露指示器
SwiftUI 2 - 如何防止顶部部分在 macOS 和 iPadOS 的列表中关闭