当用户输入的时间低于预期时间时,如何在 swiftUI 中显示警报消息?
Posted
技术标签:
【中文标题】当用户输入的时间低于预期时间时,如何在 swiftUI 中显示警报消息?【英文标题】:How to show alert message in swiftUI when user enters time below the expected time? 【发布时间】:2021-03-10 06:05:41 【问题描述】:我正在构建一个警报类应用程序,我只想在用户输入时间低于 2 小时时显示一条弹出消息(警报消息),用户应该收到一条消息,例如“请输入超过 2 小时的时间”持续时间”。
这是我存储警报值的地方
myViewModel.myModel.waketime
我想在用户点击下面的图片时显示消息
Image(systemName: "checkmark.circle")
.resizable()
.aspectRatio(contentMode: .fit)
.clipShape(Circle())
.sheet(isPresented: $showPlayer)
SecondView()
这是用户选择闹钟时间的另一个视图
Text("Alarm : ")
.font(.body)
Spacer()
DatePicker("", selection: self.$myViewModel.myModel.waketime, displayedComponents: .hourAndMinute)
请帮我解决这个问题!
【问题讨论】:
【参考方案1】:您可以使用Alert
向用户显示警报。为了在用户单击Image
时执行此操作,您可能希望将其包装在Button
中:
struct ContentView : View
@State var alertShown = false
var body: some View
Button(action:
if true //here, you can check your condition for whether the alert should get triggered -- like checking `myViewModel.myModel.waketime > x`
alertShown = true
)
Image(systemName: "checkmark.circle")
.resizable()
.aspectRatio(contentMode: .fit)
.clipShape(Circle())
.alert(isPresented: $alertShown)
Alert(title: Text("Please enter time more than 2 hours of duration"))
如果您不希望在您的项目中将Image
更改为accentColor
,您可能需要将.buttonStyle(PlainButtonStyle())
作为修饰符添加到Button
。
响应 cmets 的更新: 您要做的一般检查是:
if myViewModel.myModel.waketime.timeIntervalSince1970 - Date().timeIntervalSince1970 < 60 * 60 * 2
但是,请注意,根据您当前仅显示小时和分钟的策略,这将在午夜前 2 小时开始失败,因为 DatePicker
将默认为当前日期,例如凌晨 1 点,注册作为 before 当前日期/时间,而不是之后。因此,您需要添加一些额外的逻辑来解决此类问题。例如,您可以将 24 小时添加到当前日期之前的任何时间。
【讨论】:
但是它将如何检查我的时间?它应该从“myViewModel.myModel.waketime”中检索时间并检查时间是少于还是多于 2 小时。示例(如果用户将时间设置为下午 2:00,而现在时间是下午 1:00,则应给出消息并提示用户输入时长超过 2 小时) 看看我给出的代码——有一条注释告诉你在哪里进行检查。您没有提供有关waketime
的格式/时间的任何详细信息,因此除非您提供更多详细信息,否则我无法为您提供确切的代码。
感谢您的回复。你能检查我编辑的问题吗?
更新了我的回复以上是关于当用户输入的时间低于预期时间时,如何在 swiftUI 中显示警报消息?的主要内容,如果未能解决你的问题,请参考以下文章
当用户输入超过预期的参数时,强制 VBA 中的 UDF 显示 MsgBox?
如何在 Swift 中触摸 UILabel 时对其进行编辑?
如何使用 Swift 在文本字段(从右到左)上输入货币格式?