将故事板出口传递给基本控制器 class

Pass storyboard outlet to base controller class

我有一个基地class:

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:

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

    // Other stuff
}

我使用基础 class 来处理所有 table 视图函数(我在我的应用程序的许多部分中重复使用)。

在我的故事板中,我为 FeedViewController 设置了一个控制器设计,带有 table 视图。但是,我不确定如何将当前连接到 FeedViewController 的故事板出口传递到我的基本控制器,以便基本控制器处理所有 table 视图逻辑。我该怎么做?

如果您不直接在代码中实例化 BaseViewController,那么只需在基础 class 中移动出口声明(情节提要将自动处理)

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

    // Other stuff
}

class FeedViewController: BaseViewController {

    // Other stuff
}