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 呈现警报。 “警报”初始化程序的结果未使用的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序准备好呈现警报时,从 AppDelegate 呈现警报