【问题标题】:Redirecting to the same View in SwiftUI在 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 数据中随机选择并传递给视图。 “重定向”是指用新数据重新绘制相同的视图。

标签: swift view swiftui


【解决方案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
            }
        }
    }
}

【讨论】:

  • 这是一个非常聪明的解决方案!没想到这么多,谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 2020-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多