Передайте розетку раскадровки в базовый класс контроллера - PullRequest
1 голос
/ 19 марта 2020

У меня есть базовый класс:

class BaseViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITableViewDataSourcePrefetching {
    var posts = [Post]()

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return posts.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "PostTableViewCell", for: indexPath) as? PostTableViewCell else {
            fatalError("The dequeued cell is not an instance of PostTableViewCell.")
        }

        let post = posts[indexPath.row]

        cell.parentViewController = self
        cell.initialize(post: post)

        return cell
    }
}

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

class FeedViewController: BaseViewController {
    @IBOutlet weak var tableView: UITableView!

    // Other stuff
}

Я использую базовый класс для обработки всех функций табличного представления (которые я повторно использую в многие части моего приложения).

В моей раскадровке у меня настроен дизайн контроллера для FeedViewController с табличным представлением. Однако я не уверен, как передать розетку раскадровки, которая в данный момент подключена к FeedViewController, к моему базовому контроллеру, чтобы базовый контроллер обрабатывал все логи представления таблицы c. Как бы я это сделал?

1 Ответ

1 голос
/ 19 марта 2020

Если вы не создаете экземпляр BaseViewController в коде напрямую, просто переместите объявление выхода в базовый класс (раскадровка будет обрабатывать это автоматически)

class BaseViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITableViewDataSourcePrefetching {
    @IBOutlet weak var tableView: UITableView!

    // Other stuff
}

class FeedViewController: BaseViewController {

    // Other stuff
}
...