Передать данные даты из Picker в другой контроллер представления в Swift

Я хочу иметь возможность выбирать время с помощью средства выбора в одном представлении и передавать эти данные в другое представление.

Я могу сделать это как строку, но как мне передать данные о времени, чтобы выполнить расчет.

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "segue1" {
            let destinationController = segue.destination as! SecondViewController
           
            destinationController.timeLabelTextOut = timeLabel.text!
            
        }
    }

    @IBAction func dayFinishTimePicker(_ sender: Any) {
       
        let timeformat = DateFormatter()
               timeformat.dateFormat = "HH:mm"
        let finishTime = timeformat.string(from: dayFinishTimePicker.date)
        
        timeLabel.text = finishTime
      
    }

person PHutch    schedule 15.12.2020    source источник


Ответы (2)


Передайте саму дату и отформатируйте ее там, чтобы получить время внутри viewDidLoad следующего vc

destinationController.dateSent = dayFinishTimePicker.date
        
person Sh_Khan    schedule 15.12.2020

Во-первых, я бы объявил переменную finishTime вне функции и сделал бы ее переменной:

var finishTime = Date()

В SecondViewController я бы создал переменную fTime вот так:

var fTime = Date()

Тогда я бы написал в prepare func:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "segue1" {
        let destinationController = segue.destination as! SecondViewController
        destinationController.fTime! = self.finishTime
        destinationController.timeLabelTextOut = timeLabel.text!
        
    }
}

И функция @IBAction выглядит так:

 @IBAction func dayFinishTimePicker(_ sender: Any) {
   
    let timeformat = DateFormatter()
           timeformat.dateFormat = "HH:mm"
    self.finishTime = dayFinishTimePicker.date
    
    timeLabel.text = timeformat.string(from: dayFinishTimePicker.date)
  
}
person Răzvan Gabriel Rujoiu    schedule 15.12.2020
comment
Кроме того, если timeLabelTextOut из SecondViewController является меткой, будьте осторожны, чтобы установить ее текст в viewDidLoad() в SecondViewController , потому что метка еще не создана. - person Răzvan Gabriel Rujoiu; 16.12.2020