我有我的工作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 }但是这不会给出正确的结果。 你有什么建议吗?
更新以下代码是正确的。 这个问题在其他地方,与这种情况无关。
I have I working UITableView with self sized cells (UITableViewAutomaticDimension) with news content. And this works as it should :)
And now I come to a part where I have to add one cell in the middle of the news cells, and its height should be the same size as the device screen.
I tried with adding this height method from UITableView class:
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 }but this don't give correct result. Do you have any suggestions?
UPDATE The following code is correct. The issue was elsewhere and it was not relevant to this case.
最满意答案
我认为你缺少设置rowHeight和estimatedRowHeight tableview。请找到我使用过的代码
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 }I think you are missing to set rowHeight and estimatedRowHeight for tableview .Please find code i have used
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 }更多推荐
发布评论