Как загрузить UITableView из файла пера в представление контейнера в контроллере родительского представления? - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь загрузить контроллер представления (давайте назовем этот VC2), который содержит табличное представление, в контейнерное представление в родительском контроллере представления (VC1). Проблема, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь зарегистрировать перо или установить делегат / источник данных таблицы в VC2, я получаю нулевую ошибку.

Я пытался удалить соединение delegate и dataSource, но это просто загружает пустой просмотр таблицы

Это код, который я использовал для передачи данных в контроллер представления контейнера:

   override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let listVC = segue.destination as? BusinessListViewController {
            listVC.bottomSheetDelegate = self
            listVC.Businesses = self.Businesses
            listVC.parentView = businessListView
            listVC.viewDidLoad()
         }
    }

и это оператор viewDidLoad() в VC2

    override func viewDidLoad() {
        super.viewDidLoad()
        BusinessListTableView.dataSource = self
        BusinessListTableView.delegate = self 
        BusinessListTableView.register(UINib.init(nibName: "BusinessTableViewCell", bundle: nil), forCellReuseIdentifier: "BizCell")
    }

Я надеюсь, что кто-то может помочь понять, как заставить этот кончик заполняться правильно. Это работало, когда VC2 перемещался через переход.

1 Ответ

0 голосов
/ 16 апреля 2019

Предположительно, у вас есть закрытие, когда ваш код получает данные?Если это так, сохраните ссылку на «VC2» в prepareForSegue и установите данные в этом замыкании.

Псевдокод:

class ViewController1: UIViewController {

    var vc2: ViewController2!

    override func viewDidLoad() {
        super.viewDidLoad()

        callToGetData() {
             onCompletion {
                 vc2.Businesses = self.Businesses
                 vc2.reload()
             }
        }

   override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let listVC = segue.destination as? BusinessListViewController {
            listVC.bottomSheetDelegate = self
            listVC.parentView = businessListView
            vc2 = listVC
         }
    }
}
...