SwiftUI-如何使用按钮然后使用计时器使文本显示

时间:2020-01-17 05:51:02

标签: swiftui

我希望按下按钮时显示字典中的文字。 开头是“ Text1”。如果按下按钮,则带有Text2的标签应出现在开始标签下。然后在3秒钟后自动使用Text3标签。最初我尝试了一个列表,但不幸的是我没有得到。 如果有人有一个主意,那就太好了。

struct ContentView: View {

   var chats = [
                "Text1" : "Hello?",
                "Text2" : "Here!",
                "Text3" : "And here!",
               ]

    var body: some View {

        NavigationView {

            VStack {
                Button(action: {}) {
                    Text("Button")
                }

                HStack {
                    Image (systemName: "faceid")
                    Text("\(chats["Text1"] ?? "Failure")")
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

这是您的解决方案。请尝试这个。

struct ContentView: View {

    var chats: [String: String] =  [
        "Text1" : "Hello?",
        "Text2" : "Here!",
        "Text3" : "And here!",
    ]

    @State var currentIndex: Int = 1


    var body: some View {

        NavigationView {
            VStack {
                Button(action: {
                    self.currentIndex = self.currentIndex + 1
                    if self.currentIndex == 2 {
                        DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
                            self.currentIndex = self.currentIndex + 1
                        }
                    }
                 print("Hello, World! Tapped")
                }) {
                    Text("Hello, World!")
                }
                HStack {
                    Image (systemName: "faceid")
                    Text("\(chats["Text\(currentIndex)"] ?? "Failure")")
                }
            }
        }
    }
}