Почему мой TableView возвращает ноль в VIPER? - PullRequest
0 голосов
/ 29 ноября 2018

Я учу VIPER.Я успешно обработал данные из View->Presnter->Interactor и вернул данные из Interactor->Presenter->View.Данные успешно возвращаются ко мне, и в этот момент extension я пытаюсь перезагрузить данные.

Когда я пытаюсь перезагрузить данные, TableView приходит ноль.Почему это ноль?Когда я использую шаблон MVC, я не вижу, что TableView приходит ноль, и все работает нормально.Любая подсказка?

Вот мой TableView

@IBOutlet weak var matchTable: UITableView!

Он подключен к File Owner.

override func viewDidLoad() {
    super.viewDidLoad()
    setup()
    matchTable.delegate = self
    matchTable.dataSource = self
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    presentor?.initiateFetch()
}

А вотэто от extension до ViewController.

extension MatchListingViewController: PresenterToViewProtocol{

    func showMatches(match: MatchDetails?, banner: Banner?) {
        matchD = match
        bannerD = banner
        matchTable.reloadData()
    }

    func showError() {
        print("I am there")
    }
}

Здесь, когда вызывается функция showMatches, я получаю данные, но при перезагрузке выдает ошибку, что matchTable равно нулю.Любая помощь?

1 Ответ

0 голосов
/ 29 ноября 2018

Я думаю, вы забыли о представителе инъекций или протоколе инициализации.Ноль не приходит из tableView, нужно больше кода, чтобы точно знать, что здесь не так.

в классе VC:

extension MatchListingViewController: PresenterToViewProtocol


override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.presentor?.initProtocol(self)
}

в классе преподавателя:

func initProtocol(_ protocol: PresenterToViewProtocol) {
        self.protocol = protocol
        self.initiateFetch()
    }

затем

self.protocol?.showMatches(match: match, banner: banner)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...