UITableView是否可以包含一些自定义单元格和自定义高度单元格?

时间:2016-11-22 15:44:53

标签: ios iphone swift uitableview

我使用自我大小的单元格(UITableView)处理UITableViewAutomaticDimension新闻内容。这样可以正常工作:)

现在我来到了一个部分,我必须在新闻单元的中间添加一个单元格,其高度应该与设备屏幕的大小相同。

我尝试从UITableView类添加此高度方法:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    let item = feed[indexPath.row]
    if item is News {
      return UITableViewAutomaticDimension
    } else if item is ConfigurationBit {
      return view.bounds.size.height
    }
    return 0.0
}

但这并没有给出正确的结果。你有什么建议吗?

更新 以下代码是正确的。问题出在其他地方,与此案无关。

2 个答案:

答案 0 :(得分:0)

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    let item = feed[indexPath.row]
    if item is News {
      let cell = self.tableView(tableObject, cellForRowAt indexPath: indexPath)
      return cell.frame.size.height
    } else if item is ConfigurationBit {
      return view.bounds.size.height
    }
    return 0.0
}

答案 1 :(得分:0)

我认为你错过了为rowHeight设置estimatedRowHeightvar arrayOfCellData = [Any]() override func viewDidLoad() { super.viewDidLoad() arrayOfCellData = [cellData(cell : 1, text : "asdadas", image : #imageLiteral(resourceName: "mark")), cellconfigData(cell : 2, text : "dasdadad", image : #imageLiteral(resourceName: "mark")), cellData(cell : 3, text : "asraerqsadas", image : #imageLiteral(resourceName: "mark")), cellconfigData(cell : 4, text : "asraerqsadas", image : #imageLiteral(resourceName: "mark")), cellData(cell : 5, text : "asraerqsadas", image : #imageLiteral(resourceName: "mark")), cellconfigData(cell : 6, text : "asraerqsadas", image : #imageLiteral(resourceName: "mark"))] tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 245 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return arrayOfCellData.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let item = arrayOfCellData[indexPath.row] if item is cellData{ let cell = Bundle.main.loadNibNamed("OwnTableViewCell", owner: self, options: nil)?.first as! OwnTableViewCell cell.mainImageView.image = (arrayOfCellData[indexPath.row] as! cellData).image cell.mainLabel.text = (arrayOfCellData[indexPath.row] as! cellData).text return cell } else { let cell = Bundle.main.loadNibNamed("NewTableViewCell", owner: self, options: nil)?.first as! NewTableViewCell cell.mainImageView.image = (arrayOfCellData[indexPath.row] as! cellconfigData).image cell.mainLabel.text = (arrayOfCellData[indexPath.row] as! cellconfigData).text return cell } } override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { let item = arrayOfCellData[indexPath.row] if item is cellData{ return UITableViewAutomaticDimension } else if item is cellconfigData{ return 100 } return 0.0 } 。请找到我用过的代码

'H' -> print 01 to screen 
'E' -> print A9 to screen 
'L' -> print 5J to screen 
'L' -> print 13 to screen 
'O' -> print 3d to screen ...