Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 新UITableViewCell未调用子视图drawRect()_Ios_Iphone_Uitableview_Swift_Uiview - Fatal编程技术网

Ios 新UITableViewCell未调用子视图drawRect()

Ios 新UITableViewCell未调用子视图drawRect(),ios,iphone,uitableview,swift,uiview,Ios,Iphone,Uitableview,Swift,Uiview,在过去的两天里,我一直有这个问题,我正在努力想办法解决它,但没有什么好结果 我有一个带有自定义UITableViewCell的UITableView。在UITableViewCell中,我有一个自定义的UIView,我通过调用它自己的drawRect对其进行子类化并绘制它 重用单元格的绘图没有问题,单元格正在调用自己的drawRect,自定义子视图也在调用自己的drawRect 当一个新的单元格出列时,问题就会出现,自定义子视图drawRect根本不会被调用,而该视图为空(不可见) 我所做的:

在过去的两天里,我一直有这个问题,我正在努力想办法解决它,但没有什么好结果

我有一个带有自定义
UITableViewCell
UITableView
。在
UITableViewCell
中,我有一个自定义的
UIView
,我通过调用它自己的
drawRect
对其进行子类化并绘制它

重用单元格的绘图没有问题,单元格正在调用自己的
drawRect
,自定义子视图也在调用自己的
drawRect

当一个新的单元格出列时,问题就会出现,自定义子视图
drawRect
根本不会被调用,而该视图为空(不可见)

我所做的:

  • 调用
    子视图.setNeedsDisplay
    无效,它会重新绘制重用单元格的自定义子视图,但不会影响绘制较新单元格的自定义子视图
这是我唯一想到的,也是显而易见的尝试


有没有办法强制为新的
UItableViewCell
的子视图绘图?

您是否尝试调用
[cell setNeedsDisplay]
但是在主线程上?

我成功地解决了这个问题,并通过实现
heightforrowatinexpath
来强制重画自定义单元格的子视图,而不考虑iOS版本(>=7)


显然,iOS在计算高度后会重新绘制单元格

我试着调用这两个函数:单元格和子视图,它似乎只是停留在重新绘制重用的单元格上,但我的意思是在主线程中:dispatch_async(dispatch_get_main_queue(),^{[cell setNeedsDisplay]});是的,那个。我试过了,但在新单元格中重画子视图没有任何影响。你会将其称为何处?我正在
cellForRowAtIndexPath
上讨论它,我不确定我是否理解正确,您想调用cell的drawRect还是子视图的drawRect?如果是单元格,则应该是这样,否则,如果是子视图,则执行相同的操作,但调用其setNeedsDisplay:dispatch_async(dispatch_get_main_queue(),^{[cell.yourSubView setNeedsDisplay]});