SwiftUI 呈现警报。 “警报”初始化程序的结果未使用

Posted

技术标签:

【中文标题】SwiftUI 呈现警报。 “警报”初始化程序的结果未使用【英文标题】:SwiftUI Present an Alert. Result of 'Alert' Initializer is unused 【发布时间】:2021-07-06 10:55:48 【问题描述】:

我正在尝试在计时器完成后向我的应用程序添加警报,我只想弹出一个窗口来说明计时器已基本完成。每当我尝试任何事情时,都会收到此错误“警报”初始化程序的结果未使用。

感谢任何帮助。

.onReceive(timerMin, perform:  _ in
            guard isActive else  return 
            if timeRemainingMin > 0 
                timeRemainingMin -= 1
             else 
                isActive = false
                timeRemainingMin = defaultTimeRemainingMin
                                    
                Alert(title: Text("This is a test"), message: Text("This is a test message!"))

            
            
        )

【问题讨论】:

您需要向我们展示更多代码,伙计。您拥有的警报没有任何问题。你怎么称呼它,你认为它在哪里等等...... 我添加了更多代码。我正在尝试调用 .onRecieve 你不能只在一些代码之后放置一个视图(警报)并期望它在代码执行到那一行时出现。这不是 Swiftui 的工作方式。 【参考方案1】:

“onReceive”不是显示警报的正确位置。使用“.alert(...)”显示它, 比如在这个测试代码中:

import SwiftUI

@main
struct TestApp: App 
    var body: some Scene 
        WindowGroup 
            ContentView()
        
    

struct ContentView: View 
    @State private var showAlert = false
    var body: some View 
        Button("show alert") 
            showAlert.toggle()
        
        .alert(isPresented: $showAlert) 
            Alert(title: Text("This is a test"), message: Text("This is a test message!"))
        
    

因此,在“onReceive”中使用您的计时器,只需在测试按钮中使用“showAlert”即可。比如:

.onReceive(timerMin)  _ in
    guard isActive else  return 
    if timeRemainingMin > 0 
        timeRemainingMin -= 1
     else 
        isActive = false
        timeRemainingMin = defaultTimeRemainingMin
        showAlert = true
    

【讨论】:

非常感谢您的澄清!非常感谢。这创造了奇迹。

以上是关于SwiftUI 呈现警报。 “警报”初始化程序的结果未使用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftUI 连续呈现两个警报视图

使用 SwiftUI 在条件内显示警报

SwiftUI 中的全局警报

当应用程序准备好呈现警报时,从 AppDelegate 呈现警报

如何在 Swiftui 上关闭应用程序时创建警报(不是通知)

SwiftUI:创建自定义警报