对于UITableCellView方法中的UITableView,未调用cellForRowAtIndexPath,但调用了numberOfRowsInSection

时间:2017-07-24 09:36:41

标签: ios objective-c uitableview user-interface autolayout

我正在开发一个现有项目。 该项目有一个屏幕,显示订单的详细信息。 每个订单都有订单商品。因此,表视图自然会用于显示订单商品。这很好用。 现在,系统已经以这种方式进行了扩展,即每个订单商品都可以有0个或更多的浇头。如果订单商品有配料,则还需要在列表中显示。 所以,我采取的方法是尝试实现一个表视图,该视图负责显示订单商品单元格中的订单商品浇头。 我已经读过这种方法,人们说这是可能的。

我现在遇到的问题是,对于订单项表视图单元格中的浇头表视图,会调用numberOfRowsInSection方法,但根本不会调用cellForRowAtIndexPath

我已经读过这个问题了,人们说这与表视图框架设置不正确有关。

我已使用Interface Builder AutoLayout设置了带有顶部单元格的订单商品。 我(认为)所有约束都已到位,以便单元格正确地呈现它的内容和高度。 但是,从截图中可以看出,根本没有呈现浇头tableview

任何人都知道可能导致表格没有渲染的原因? 任何帮助,想法,评论表示赞赏。谢谢。 enter image description here enter image description here

enter image description here

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

问题似乎与您的UITableViewDelegate以及您希望获得细胞自动高度的方式有关。

heightForRowAtIndexPath中,您返回UITableViewAutomaticDimension,实际上等于-1.0。如果你看that function's description in documentation,你会看到

  

返回值
  一个非负浮点值,指定该行应该的高度(以磅为单位)。

现在,如果您的每一行都有负高度,那么表格视图就无法显示 - 因此永远不会调用cellForRowAtIndexPath

<强> TL,DR
您几乎就在那里 - UITableViewAutomaticDimension应设置为UITableView.rowHeight,而不是heightForRowAtIndexPath

toppingsTableView.rowHeight = UITableViewAutomaticDimension

此外,删除功能heightForRowAtIndexPathestimatedHeightForRowAtIndexPath