在 SwiftUI 中重定向到同一个视图

Posted

技术标签:

【中文标题】在 SwiftUI 中重定向到同一个视图【英文标题】:Redirecting to the same View in SwiftUI 【发布时间】:2020-03-22 21:52:28 【问题描述】:

我正在尝试使用 SwiftUI,并且正在尝试制作一个非常简单的测验应用程序,您可以在其中学习一门外语。我有一个由英语单词、图像(表情符号)和翻译组成的视图。我想添加一个按钮,将我重定向到这个完全相同的视图,并使用新单词进行学习,而无需使用NavigationLinkNavigtaionView 进行更深入的导航。我仍然希望有一个后退按钮重定向到我的主屏幕,但我不知道这一切在 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/视图?

如何在 Django 中重定向到外部 URL?

在 Play 框架中重定向到同一控制器中的动作

有没有办法在 .Net 5 中的 AuthorizationHandler 中重定向?

维护模式与中间件在 Laravel 中重定向

如何在带有上下文的 Django 中重定向?