我在UITableView
中有一个HomeViewController
。该UITableView
中有一个自定义的UITableViewCell
。
我想通过使其出队在UITableViewCell
中使用相同的ListViewController
。下面的代码不起作用。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let homeVC: HomeViewController = storyboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
if let homeTableView = homeVC.tableView {
// Above homeVC.tableView is becoming nil.
// Would like to dequeue here.
}
答案 0 :(得分:0)
由于我看不到您的HomeViewController
代码,因此我假设tableView
属性从Interface Builder链接为@IBOutlet weak var tableView: UITableView!
。这意味着在视图实际出现在屏幕上之前不会实例化tableView
。为了证明这一点,请尝试在您的HomeViewConntroller
的{{1}}方法中放置一个断点,并注意它永远不会到达。
为解决您的问题,我将一个表视图添加到您的viewDidLoad()
中,并将自定义表单元格从ListViewController
复制到您的表视图中。然后创建一个自定义HomeViewController
,然后在IB中将UITableViewCell
和HomeViewController
中的两个单元都分配为自定义表格视图单元。
答案 1 :(得分:0)
您可以为要在多个视图控制器中重用的单元格创建一个xib文件和一个自定义UITableViewCell
类。然后,在xib的身份检查器中,将单元的自定义类型定义为您的自定义类。然后,通过在viewDidLoad
中的tableView实例上调用register函数,在每个视图控制器中注册单元格类。然后通过实现UITableViewDataSource的tableView(_:cellForRowAt:)
使单元出队。