在 SwiftUI 中重定向到同一个视图
Posted
技术标签:
【中文标题】在 SwiftUI 中重定向到同一个视图【英文标题】:Redirecting to the same View in SwiftUI 【发布时间】:2020-03-22 21:52:28 【问题描述】:我正在尝试使用 SwiftUI,并且正在尝试制作一个非常简单的测验应用程序,您可以在其中学习一门外语。我有一个由英语单词、图像(表情符号)和翻译组成的视图。我想添加一个按钮,将我重定向到这个完全相同的视图,并使用新单词进行学习,而无需使用NavigationLink
和NavigtaionView
进行更深入的导航。我仍然希望有一个后退按钮重定向到我的主屏幕,但我不知道这一切在 SwiftUI 中是否可行。
所描述视图的代码:
struct LearnView: View
var word: String
var icon: String
var translation: String
var body: some View
VStack(alignment: .center, spacing: 50)
SquareView(word: word, icon: icon)
Text(translation).font(.largeTitle)
// Button to next (same) view with new word
【问题讨论】:
这个按钮应该从哪里获取新单词?你有一些共享存储或模型等吗? “重定向”是什么意思? 我没有分享任何模型,因为我不认为它对这个问题很重要或不需要。新词将从 json 数据中随机选择并传递给视图。 “重定向”是指用新数据重新绘制相同的视图。 【参考方案1】:你可以这样做:
struct Word
var word: String
var icon: String
var translation: String
struct LearnView: View
@State var position = 0
var words: [Word] = []
var body: some View
VStack(alignment: .center, spacing: 50)
SquareView(word: words[position].word, icon: words[position].icon)
Text(words[position].translation).font(.largeTitle)
Button("Next")
self.position += 1
【讨论】:
这是一个非常聪明的解决方案!没想到这么多,谢谢!以上是关于在 SwiftUI 中重定向到同一个视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 IBM Worklight 中重定向到同一页面但不同的 div/视图?