【问题标题】:overwhelmed by UIDatePicker. trying to preset .hour and .minute for func in viewDidLoad()被 UIDatePicker 淹没了。试图在 viewDidLoad() 中为 func 预设 .hour 和 .minute
【发布时间】:2017-12-07 03:35:08
【问题描述】:

我花了 2.5 个小时搜索谷歌,我想我这辈子从来没有在谷歌搜索第 10 页上过。直到今天。

我是 swift 的新手,我希望应用程序打开新的 viewcontroller 并使用 UIDatePicker (datepickermode: time) 预设为用户选择他最后一次使用 datepicker 设置时间的时间。如果有帮助的话,基本上就像 iphone 闹钟一样?

包含 .hour 和 .minute(整数)的结构 'Time' 有自己的类。

我想要一个用 viewDidLoad() 执行并设置时间选择器的小函数。

   @IBAction func timePicker(_ sender: UIDatePicker) {
    let picker = timePicker.date
    getTime(date: picker)
    print(globalTime.savedTime)
}

func oldTime(withTime: TimeStruct.Time) {

    var newTime = DateComponents()
    newTime.hour = withTime.hour
    newTime.minute = withTime.minute

    var newDate = Date()

    timePicker.calendar.

    //blabliblub i've lost it here. the code makes no sense anymore



}

func getTime(date: Date) {

let components = Calendar.current.dateComponents([.hour, .minute], from: date)
globalTime.savedTime.hour = components.hour!
globalTime.savedTime.minute = components.minute!

}

getTime 保存设置后的时间。 oldTime 在再次查看时将之前设置的时间提供给选择器以再次更改。

用户设置时间并单击保存按钮,将当前小时和分钟保存到“时间”类型的变量中

哦,如果可能的话,请帮助我使用 Date(),而不是 NSDate()。

非常感谢您的宝贵时间!

菲利克斯✌️

【问题讨论】:

    标签: ios swift xcode date datepicker


    【解决方案1】:

    希望这对任何人都有帮助。感谢您的进一步帮助:)

    import UIKit
    
    var globalTime = TimeStruct()
    
    class Time_Setting: UIViewController {
    
    func oldTime(withTime: TimeStruct.Time) {
    
        let newHour = withTime.hour
        let newMinute = withTime.minute
        let someDate = Date()
    
        let newTimePicker = timePicker.calendar.date(bySettingHour: newHour, minute: newMinute, second: 0, of: someDate)
    
        timePicker.date = newTimePicker!
    
        }
    }
    

    另一个文件:

    import UIKit
    
    class TimeStruct {
    
    struct Time {
        var hour: Int
        var minute: Int
    }
    
    var savedTime = Time(hour: 07, minute: 00)
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试过使用普通的选择器?日期选择器是具有某些内置功能的模板。但是,普通人可能能够完成您需要它做的所有事情。例如,只需创建一个包含 3 个组件(0,1 和 2)的普通选择器,这些组件通过执行以下操作来控制 Hour Minute 和 PM/AM:

      override func viewDidLoad() {
          super.viewDidLoad()
          // Do any additional setup after loading the view.
      
          self.Picker.delegate = self
          self.Picker.dataSource = self
          PickerData = [["0","1",/*...*/,"9"],["0","1",/*...*/,"9"],["AM","PM"]]
          self.Picker.selectRow(row: /*var*/, inComponent: /*component*/, animated: /*bool*/)
      } /*Insert data from previous session above via a variable*/
      

      func numberOfComponents(in: UIPickerView) -> Int {
          return 3
      }
      
      //Number of rows
      func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
          return PickerData[component].count
      }
      
      //Data to return for the row and column being read
      func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
          return PickerData[component][row]
      }
      
      //Catpure the picker view selection
      func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
          // This method is triggered whenever the user makes a change to the picker selection.
          // The parameter named row and component represents what was selected.
      }
      

      【讨论】:

      • 谢谢你说得通。尽管它实际上应该在以后用作警报:小时,分钟,上午/下午是否足以创建每天此时触发的警报?或者我需要一个完整的日期吗?我也在发布后不久自己解决了这个问题。
      • 你重写了日期选择器:D(除了它不再处理本地化和 12 与 24 小时之类的东西)
      • 好的,所以它必须像日期一样复杂。谢谢。通知将是我要学习的另一件事。期待它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多