我正在尝试将包含表视图的视图控制器(让我们调用此VC2)加载到父视图控制器(VC1)中的容器视图中。我遇到的问题是当我尝试在VC2中注册nib或设置tableview的委托/数据源时,我得到一个nil错误。
我试过删除delegate
和dataSource
连接,但这只是加载一个空白的tableview
这是我用来将数据传输到容器视图控制器的代码:
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")
}
我希望有人可以帮助弄清楚如何让这个笔尖正确填充。当VC2通过segue导航到它时它正在工作。
据推测,当代码检索数据时,你有一个闭包?如果是这样,请在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
}
}
}