У меня есть структура WorkoutGenerator
, которая возвращает разные тренировки на основе разных параметров, например, generateWorkout.standardWorkout
возвращает что-то отличное от generateWorkout.hardWorkout
.
У меня есть 3 кнопки на странице «Настройка тренировки»,каждый из них предназначался для передачи различного типа тренировки на «страницу тренировки» (также есть поле ввода для «времени тренировки»).
В настоящее время у меня есть один переход goToWorkout
со «Страницы настройки тренировки»на «Страницу тренировки»
Что я хочу сделать, это вызвать segue
на странице тренировки, пропуская различные тренировки в зависимости от того, что нажимает пользователь.
Пока у меня есть:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//currently have one segue between the pages
if segue.identifier == "goToWorkout" {
let finalTimeForWorkout = Int(timeInputField.text!)
//set a standardWorkout to pass to Workout Page
let finalWorkout = FinalWorkout(generatedWorkout: WorkoutGenerator.standardWorkout.generate(), timeForWorkout: finalTimeForWorkout!)
//set the final parameters ready to pass
let finalWorkoutTime = finalWorkout.timeForWorkout
let finalWorkoutExercises = finalWorkout.generatedWorkout.workoutExercises
if let destVC = segue.destination as? WorkoutController {
destVC.selectedWorkoutExerciseArray = finalWorkoutExercises
destVC.selectedWorkoutTime = finalWorkoutTime
}
}
}
and then something like this for each button :
//use this button to pass a standard workout
//want to pass a diff workout if a diff button pressed
@IBAction func standardWorkoutPressed(_ sender: UIButton) {
performSegue(withIdentifier: "goToWorkout", sender: self )
}
Моя проблема после нескольких часов игры с ней состоит в том, как элегантно передать другую тренировку на страницу тренировки.
то есть, я думаю, я мог бы буквально просто скопировать и вставить весь код для каждой кнопки и создать новый переход для каждой, но это кажется неправильным способом сделать это!
Подобные вещиЯ пытался определить тренировки как переменные в разделе if
else if
, но тогда окончательные тренировки не будут рассмотрены.
Надеюсь, что это имеет смысл, ответы, которые я могу найти об условных переходах, в основном относятся к «разрешению перехода только при этом условии», а не к передаче разных наборов данных в один и тот же пункт назначения.например, example1 и example2