在 SwiftUI 中使用时间间隔的 DatePicker

2023-11-27

我想在 SwiftUI 中使用 DatePicker,它工作正常并且符合预期。我想添加一个时间间隔,如所解释的:UIDatePicker 15 分钟增量 Swift

DatePicker("Please enter a time", selection: $wakeUp, displayedComponents: .hourAndMinute)

SwiftUI 中有修改器吗?


我不相信对此有任何修改。然而,可以通过使用 UIViewRepresentable 来包装 UIDatePicker 来“自己做”:

该代码的基本结构基于与 UIKit 交互教程。

struct MyDatePicker: UIViewRepresentable {

    @Binding var selection: Date
    let minuteInterval: Int
    let displayedComponents: DatePickerComponents

    func makeCoordinator() -> Coordinator {
        return Coordinator(self)
    }

    func makeUIView(context: UIViewRepresentableContext<MyDatePicker>) -> UIDatePicker {
        let picker = UIDatePicker()
        // listen to changes coming from the date picker, and use them to update the state variable
        picker.addTarget(context.coordinator, action: #selector(Coordinator.dateChanged), for: .valueChanged)
        return picker
    }

    func updateUIView(_ picker: UIDatePicker, context: UIViewRepresentableContext<MyDatePicker>) {
        picker.minuteInterval = minuteInterval
        picker.date = selection

        switch displayedComponents {
        case .hourAndMinute:
            picker.datePickerMode = .time
        case .date:
            picker.datePickerMode = .date
        case [.hourAndMinute, .date]:
            picker.datePickerMode = .dateAndTime
        default:
            break
        }
    }

    class Coordinator {
        let datePicker: MyDatePicker
        init(_ datePicker: MyDatePicker) {
            self.datePicker = datePicker
        }

        @objc func dateChanged(_ sender: UIDatePicker) {
            datePicker.selection = sender.date
        }
    }
}

struct DatePickerDemo: View {
    @State var wakeUp: Date = Date()
    @State var minterval: Int = 1

    var body: some View {
        VStack {
            Stepper(value: $minterval) {
                Text("Minute interval: \(minterval)")
            }
            MyDatePicker(selection: $wakeUp, minuteInterval: minterval, displayedComponents: .hourAndMinute)
            Text("\(wakeUp)")
        }
    }
}

struct DatePickerDemo_Previews: PreviewProvider {
    static var previews: some View {
        DatePickerDemo()
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SwiftUI 中使用时间间隔的 DatePicker 的相关文章

随机推荐

  • 如何使用Python有效地将解析后的XML文档存储在MySQL数据库中?

    以下是 XML 文件 book xml
  • TFS 2013:同一台机器上的多个构建控制器

    我希望我们可以在同一台机器上使用多个构建控制器 因为我们有许多团队项目集合 但它们不会同时使用 因此这里不存在真正的性能问题 并且我们的大多数构建服务器都不会长时间使用 我知道可以使用 TFS 2010 和 TFS 2012 来做到这一点
  • 提升asio超时[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 boost asio 中设置阻塞套接字的超时 我之前读过一些关于超时的条目 但我不明白 我想要一个定义的连接超时 连接代码如下所示 try boost asio ip tcp resolver
  • 如何将复选框作为 dataGridView 的 ColumnHeader

    我正在 C VS2005 中开发一个窗口应用程序 我有一个 dataGridView 其中第一列有复选框 现在我希望列标题也成为一个复选框 如果我选择列中的所有复选框 则应选择该复选框 我怎样才能做到这一点 我提到了代码项目链接 但如果我使
  • 如何获得以赫兹为单位的 DFT/FFT 输出频率?

    我想开发音符检测器作为我的学位项目 并且我想从头开始 我已经为 wav 文件编写了代码 该文件从该音频音乐文件中提取所有信息并给出振幅 然后我编写了 DFT 代码 它以复数形式输出 其中轴 实数 虚数 之一是幅度 幅度 另一个轴是相位 现在
  • 使用 xmlSerializer.Serialize 和 IEnumerable 对象序列化对象

    我有一个对象 其中包含一个定义为 IEnumerable 的对象 即 Serializable XmlRoot MyObject public class MyObject XmlAttribute public string Name g
  • Jackson:如何在不修改 POJO 的情况下向 JSON 添加自定义属性

    我正在为我的应用程序开发一个 REST 接口 使用 Jackson 将我的 POJO 域对象序列化为 JSON 表示形式 我想自定义某些类型的序列化 以向 POJO 中不存在的 JSON 表示添加其他属性 例如添加一些元数据 参考数据等 我
  • 如何防止 Google Colab 断开连接?

    有没有办法以编程方式阻止谷歌合作实验室超时断开连接 以下描述了笔记本电脑自动断开连接的情况 Google Colab 笔记本的空闲超时为 90 分钟 绝对超时为 12 小时 这意味着 如果用户超过 90 分钟没有与其 Google Cola
  • 为什么 x86_64 CPU 上没有通用寄存器的乘加融合?

    在 Intel 和 AMD x86 64 处理器上 SIMD 矢量化寄存器具有特定的融合乘加功能 但通用 标量 整数 寄存器don t 你基本上需要先乘法 然后加法 除非你可以将东西放入一个lea 这是为什么 我的意思是 它是否毫无用处以至
  • iOS 9 Facebook SDK 登录/分享

    我在 iOS 9 上使用最新的 Facebook SDK 4 6 时遇到了问题 为了授权用户 我使用 FBSDKLoginManager 我尝试过这样设置 loginManager loginBehavior FBSDKLoginBehav
  • 使用 python 将分隔字符串列表转换为树/嵌套字典

    我正在尝试转换点分隔字符串的列表 例如 one two three four one six seven eight five nine ten twelve zero 进入一棵树 嵌套列表或字典 任何易于遍历的东西 真实数据恰好有1到4个
  • powershell 过滤 csv

    由于我是 Powershell 新手 因此寻求有关最佳实践的帮助 我有一个 csv 文件 我想过滤掉 csv 中的每一行 但包含 未安装 的行除外 然后 我想根据包含计算机列表的单独 csv 文件过滤这些结果 并排除包含匹配项的任何行 任何
  • 关闭浏览器窗口后是否有可能如何发送 AJAX? [复制]

    这个问题在这里已经有答案了 关闭浏览器窗口后是否有可能如何发送AJAX 我有一个使用 JavaScript jQuery 进行移动的浏览器游戏 如果我在每次移动后发送 Ajax 这对服务器来说会很困难 所以我想在用户关闭窗口 或书签 时发送
  • 在 C# 中获取重叠的正则表达式匹配

    我有正则表达式1 0 1和测试字符串1000010001 我想要 2 场比赛 但我发现只找到 1 场 var regex new Regex 1 0 1 var values regex Matches intBinaryString va
  • 用于虚拟机映像的二进制差异和补丁实用程序[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要经常发布一些软件 并且该软件包含为VMWare磁盘文件 即 vmdk文件 我想要的是某种二进制差异和补丁实用程序 以使生成的增量尽可能小 让我
  • R 中的轮廓图

    我有一组数据 其中包含 项目 关联簇 轮廓系数 如有必要 我可以使用更多信息进一步扩充该数据集 我想在 R 中生成轮廓图 我在这方面遇到了麻烦 因为我遇到的示例使用内置的 kmeans 或相关 聚类函数并绘制结果 我想绕过此步骤并为我自己的
  • 如何在 php.ini 中启用 oci8 (Oracle) 扩展 - PHP 警告:PHP 启动:第 0 行未知

    我有 Windows XP 最近安装了 wamp apache mysql php 32 位 我测试了安装 使用 php 和 apache 连接到 mysql 数据库 一切正常 现在我需要连接到 Oracle 数据库 因此我尝试启用一些扩展
  • jquery on 带/不带选择器参数和 jquery delegate 有什么区别?

    我正在使用jquery 1 10 我想知道这三个函数有什么区别 哪个功能更好 为什么 委托功能的目的是什么 dropdown menu on click show opt menu function alert hello dropdown
  • 毕加索图像缓存

    我想下载以下带有毕加索图像缓存的图像下载代码 DownloadImage downloadImage new DownloadImage downloadImage execute advert getImgUrl private clas
  • 在 SwiftUI 中使用时间间隔的 DatePicker

    我想在 SwiftUI 中使用 DatePicker 它工作正常并且符合预期 我想添加一个时间间隔 如所解释的 UIDatePicker 15 分钟增量 Swift DatePicker Please enter a time select