如何在 SwiftUI 的文本块中嵌入 NavigationLink?

Posted

技术标签:

【中文标题】如何在 SwiftUI 的文本块中嵌入 NavigationLink?【英文标题】:How do I embed a NavigationLink inside a block of text in SwiftUI? 【发布时间】:2019-07-18 02:08:24 【问题描述】:

我想让 SwiftUI NavigationLink 与文本块内联显示。我该怎么做?

这是我想要完成的一个示例。我希望条款和条件成为文本的一部分,而不是单独的视图。 Tap to view image.

【问题讨论】:

【参考方案1】:

目前,SwiftUI 中没有 NSAttributedString 等价物。

这可能不是您想要的,但使用堆栈可能是实现目标的最佳选择(VStackHStack,哪个更合适):

HStack 
    Text("By creating an account, you agree to the")
    Button("Terms & Conditions") 
       // UIApplication.shared.openURL
    

您可能需要考虑本地化,因为元素的顺序在其他语言中可能不同,可能包括位于句子中间的按钮。不是很有希望。

我没用过,但您可能想研究一下使用UIViewRepresentable 的方法。有了它,您可以对字符串的不同部分应用不同的样式,但不确定是否有任何方法可以附加事件处理程序。

【讨论】:

是的,我可能必须使用 UIViewRepresentable。不过,在 SwiftUI 中这样做会很好。

以上是关于如何在 SwiftUI 的文本块中嵌入 NavigationLink?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中嵌入 ForEach 的 HStack 中设置相对宽度?

SwiftUI - 嵌入 ScrollView 后文本被截断

如何在 SwiftUI 中清除列表项上的默认突出显示灰色?

当嵌入到 SwiftUI 中的 ScrollView 中时,VStack 内的内容会缩小

SwiftUI:如何在动态列表或 LazyVStack 中获取视图框架

SwiftUI 详细视图显示在屏幕底部