在斯威夫特扩展蜂窝3

问题描述:

我试图实现使用this在斯威夫特扩展蜂窝3

这里的扩展蜂窝是我heightForRowAt indexPath

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    switch indexPath.row { 
    case 0 : return 70 
    case 1 : 
     let cell = self.tableView(tableView, cellForRowAt: indexPath) 

     if let datePickerCell = cell as? MyDatePickerCell { 
      return datePickerCell.datePickerHeight() 
     } 
     return 260 
    case 2 : return 80 
    default : return 60 
    } 

} 

该应用程序被卡在

let cell = self.tableView(tableView, cellForRowAt: indexPath) 

UITableView是嵌入模式UIViewController

为什么是t他的发生?

+0

由于表格嵌入在VC中,您是否在使用委托? – Shades

+0

tableview是'MyDatePickerCell'委托人 – Carpsen90

+0

但是该类是UIViewController?你的桌子有电源插座吗? – Shades

我认为发生的事情是你的tableView在你首先加载它们之前寻找你的单元格的高度。所以你试图在加载之前检索单元格,导致崩溃。

要解决此问题,您可以在加载tableView并在heightForCell中使用该单元格之前创建一个虚拟单元。这更适用于计算每个单元格的变量高度。在这种情况下,可能会硬编码起始高度,然后在此之后使用该单元格作为高度。

+0

我已经添加了一个虚拟单元作为类var,并将其设置在viewDidLoad中:'datePickerCell = CreateDatePickerCell(style:UITableViewCellStyle.default,reuseIdentifier:“MyDatePickerCell”)',仍然应用程序卡住 – Carpsen90

+0

它现在卡在哪里? –

+0

卡住=没有任何反应,它不是一个崩溃。和模态uiviewcontroller不出现 – Carpsen90