2016-11-22 110 views
0

我有我的工作UITableView自尺寸的细胞(UITableViewAutomaticDimension)与新闻内容。而这个工作,它应该:)UITableView是否可以包含一些自我大小的单元格和自定义高度单元格?

现在我走到哪里我都在新闻单元的中间添加一个小区的一部分,它的高度应该是大小的设备屏幕相同。

我试图从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 
} 

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

UPDATE 以下代码是正确的。这个问题在其他地方,与这种情况无关。

+0

newsHandler.feed是这个数组同时持有新闻和ConfigurationBit对象 – Vinodh

+0

肯定。我编辑它,所以现在它不那么困惑。 –

+0

你的代码没问题,让我们打印一下view.bounds.size.height,看看它的大小是否正确。 – Nick

回答

0

我认为你缺少设置rowHeightestimatedRowHeight的实现代码如下,请您及时发现代码中,我使用

var 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 
    } 
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 
}