从另一个UIViewController的UITableView获取UITableViewCell

时间:2019-01-21 00:12:56

标签: ios swift uitableview

我在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.
}

2 个答案:

答案 0 :(得分:0)

由于我看不到您的HomeViewController代码,因此我假设tableView属性从Interface Builder链接为@IBOutlet weak var tableView: UITableView!。这意味着在视图实际出现在屏幕上之前不会实例化tableView。为了证明这一点,请尝试在您的HomeViewConntroller的{​​{1}}方法中放置一个断点,并注意它永远不会到达。

为解决您的问题,我将一个表视图添加到您的viewDidLoad()中,并将自定义表单元格从ListViewController复制到您的表视图中。然后创建一个自定义HomeViewController,然后在IB中将UITableViewCellHomeViewController中的两个单元都分配为自定义表格视图单元。

答案 1 :(得分:0)

您可以为要在多个视图控制器中重用的单元格创建一个xib文件和一个自定义UITableViewCell类。然后,在xib的身份检查器中,将单元的自定义类型定义为您的自定义类。然后,通过在viewDidLoad中的tableView实例上调用register函数,在每个视图控制器中注册单元格类。然后通过实现UITableViewDataSource的tableView(_:cellForRowAt:)使单元出队。