我正在尝试在我的应用程序中实现委托,以便在两个视图控制器之间重新加载其中一个tableView的数据,但当我按下按钮时,什么也没有发生,我已经使用断点测试过了,我的实现是否有遗漏?
发送视图控制器
protocol UpdateDelegate {
func updateExerciseCells()
}
class ExerciseVC: UIViewController {
var delegate:UpdateDelegate?
@IBAction func saveWorkoutPressed(_ sender: Any) {
exercise = Exercise(name: exerciseNameInput.text!, weight: weightInput.text!, reps: repsInput.text!, sets: setsInput.text!, difficulty: "")
WorkoutService.instance.exercises.append(exercise!)
self.delegate?.updateExerciseCells()
dismiss(animated: true, completion: nil)
}
}
接收视图控制器
class WorkoutVC: UIViewController, UpdateDelegate {
var alert:ExerciseVC = ExerciseVC()
override func viewDidLoad() {
super.viewDidLoad()
alert.delegate = self
}
func updateExerciseCells() {
//update table
}
}
updateExerciseCells()
。 - ShedSportsIBAction saveWorkoutPressed(sender:)
块内部是 nil 吗? - elightself.delegate?.updateExerciseCells()
将不会被调用。这是你的问题。确保self.delegate?
不为 nil,并且它将调用saveWorkouPressed()
。如果您能够通过 Github 共享项目,我可以看一下。今天休息 :) - elight