如何从笔尖文件中将UITableView加载到父视图控制器中的容器视图中?

时间:2019-04-12 15:49:10

标签: swift uitableview xib nib uicontainerview

我试图将包含表视图的视图控制器(称为VC2)加载到父视图控制器(VC1)的容器视图中。我遇到的问题是当我尝试在VC2中注册笔尖或设置tableview的委托/数据源时,出现nil错误。

我尝试删除delegatedataSource连接,但这只会加载空白的表格视图

这是我用来将数据传输到容器视图控制器的代码:

   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()
         }
    }

这是VC2中的viewDidLoad()语句

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

我希望有人可以帮助弄清楚如何使该笔尖正确填充。通过segue导航到VC2时,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

想必您在代码检索数据时关闭了吗?如果是这样,请在prepareForSegue中保存对“ VC2”的引用,然后在该闭包中设置数据。

伪代码:

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
         }
    }
}