問題は解決しましたが、それを行うためのより良い方法があるかどうかはわかりません。ワークアウト ログを作成しています。VC1 から日付を選択し、VC 2 を押してエクササイズを選択し、そのエクササイズを VC1 に戻したいです。そのような委任を使用して返されたデータを取得しています。
VC1
//Here the date of the new Workout. I have to get the exercise first.
func addButtonInSectionDidClick(date:NSDate) {
//Delegate will call exerciseSelectionDismissedWithExerciseName
exerciseSelectionWireframe!.dismissDelegate = self
//Push the VC 2 for exercise selection
exerciseSelectionWireframe!.presentExerciseSelection()
}
func exerciseSelectionDismissedWithExerciseName(name:String) {
//Returned but I can't use the var date anymore.
}
問題があります。委任方法では var date を使用できませんが、使用する必要があります。
私の回避策は、完了ブロックをプライベート変数として使用することです。
private var completionBlock: (() -> Void)?
//Here the date of the new Workout. I have to get the exercise first.
func addButtonInSectionDidClick(date:NSDate) {
//Delegate will call exerciseSelectionDismissedWithExerciseName
exerciseSelectionWireframe!.dismissDelegate = self
//Push the VC 2 for exercise selection
exerciseSelectionWireframe!.presentExerciseSelection()
completionBlock = {
var myDate = date
}
}
func exerciseSelectionDismissedWithExerciseName(name:String) {
if let completionBlock = completionBlock {
completionBlock()
}
}
これを行う他の定義済みの方法はありますか?私はそこにそのcompletionBlock変数を持っているのが好きではありません。