【问题标题】:Way to stop action repeating SwiftUI停止重复 SwiftUI 的动作的方法
【发布时间】:2021-02-17 21:48:25
【问题描述】:

我在测验中使用以下代码,一旦用户回答问题,就会弹出警报。然后他们可以选择转到下一个问题或再次查看该问题,然后在一段时间后出现下一个问题。

我遇到的问题是此操作会继续到下一个问题并在一段时间后跳过它,不允许用户有时间回答它!在以下问题中停止自动重复动作的最佳方法是什么?

    func nextTapped() {
        DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) {
            nextQuestion()
        }
    }

    func continueTapped() {
        nextQuestion()
    }
 .alert(isPresented: $showingFeedback) {
                    Alert(
                        title: Text(scoreTitle),
                        message: Text(selectedQuestion!.feedback),
                        primaryButton: .default(Text("Review"), action: nextTapped),
                        secondaryButton: .default(Text("Continue"), action: continueTapped)
                    )
                }

【问题讨论】:

  • 我在这里没有看到任何重复的代码。你能展示更多你的代码吗?理想情况下,一个可重现的例子?
  • 请添加Minimal, Reproducible Example 或更好地解释您的问题。

标签: swiftui alert dispatch-queue


【解决方案1】:

我发现该函数传递到下一个问题。所以我回答了第一个问题,按评论,10 秒后它会自动转到下一个问题。在我按下任何按钮之前,我发现下一个问题也会发生这种情况。我发现在代码中添加 ' -> Void ' 会阻止它。

func nextTapped() -> Void {
    DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) {
        nextQuestion()
    }
}

func continueTapped() {
    nextQuestion()
}

【讨论】:

    猜你喜欢
    • 2020-03-26
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多