SwiftUI - Как сделать так, чтобы текст отображался с помощью кнопки, а затем с помощью таймера - PullRequest
2 голосов
/ 17 января 2020

Хотелось бы, чтобы текст из диктатуры появлялся при нажатии кнопки. «Text1» там в начале. Если кнопка нажата, под начальной меткой должна появиться метка с текстом2. Затем автоматически метка с Text3 через 3 секунды. Первоначально я попробовал список, но, к сожалению, я не получил его. Было бы здорово, если у кого-то есть идея.

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 Ответ

2 голосов
/ 17 января 2020

Вот ваше решение. Пожалуйста, попробуйте это.

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")")
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...