我试图将包含表视图的视图控制器(称为VC2)加载到父视图控制器(VC1)的容器视图中。我遇到的问题是当我尝试在VC2中注册笔尖或设置tableview的委托/数据源时,出现nil错误。
我尝试删除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()
}
}
这是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时,它可以正常工作。
答案 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
}
}
}