Мой протокол не работает, что с ним не так? - PullRequest
1 голос
/ 18 апреля 2020

У меня есть четыре контроллера представления, и я пытаюсь передавать данные между контроллерами по протоколам, хотя два других моих протокола работают нормально, последний не работает, и я не мог понять это.

Это мой контроллер первого вида, который должен отправлять данные:

import UIKit

class ExercisesTableViewController: UITableViewController, ExerciseProtocol{

    var exerciseToSend: Exercise? {
        didSet{
            print(exerciseToSend!) // This prints the result.
            performSegue(withIdentifier: "showDetail", sender: self)
        }
    }

    func getExercise() -> Exercise {
        return exerciseToSend!
    }
                   .
                   .
                   .
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        exerciseToSend = exercises[indexPath.row]
    }
                   .
                   .
                   .
}

Это контроллер, который должен получать данные

import UIKit

protocol ExerciseProtocol {
    func getExercise() -> Exercise
}

class ExerciseDetailViewController: UIViewController {

    var delegate:ExerciseProtocol?

    override func viewDidLoad() {
        print(delegate?.getExercise()) // This doesn't print the result.
        super.viewDidLoad()
    }
}

1 Ответ

0 голосов
/ 18 апреля 2020

Добавьте это внутрь ExercisesTableViewController

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard let des = segue.destination as? ExerciseDetailViewController else {return}
    des.delegate = self
}
...