在调用setNeedsDisplay之后,为什么我的UIView子类不重绘?

时间:2011-01-09 10:18:54

标签: iphone uiview uitableview drawrect

我有一个自定义UIView,它是UITableViewCell的子视图。绘制单元格时,我的自定义视图也是如此,在我的UIView子类中正确调用drawRect :.重新加载单元格时,将正确绘制视图(调用drawRect:)。

当某个事件发生时(例如计时器),我想重绘视图而不必重新加载整个单元格。 (这不是单元格中唯一的视图。)

但是,当我在子视图上调用setNeedsDisplay时,没有任何反应。

我猜测当我的视图drawRect:被调用时,生成的图像被缓存在某个地方的支持中,这样当我调用setNeedsDisplay将支持重新绘制到屏幕上时,我的{{ 1}}呼叫永远不会再被调用。

为什么在创建单元格之后永远不会再调用drawRect:

编辑:单元格的子视图是从笔尖创建的。即:从笔尖加载UIViewController,并将其视图添加到UITableViewCell。

我从头开始使用自定义视图创建了一个测试用例,该视图未从nib(由代码创建)加载,并且按预期工作:drawRect:会导致setNeedsDisplay调用。它必须是在.xib文件中设置的东西,或者当它从笔尖加载时与视图不同的东西。

1 个答案:

答案 0 :(得分:1)

我自己也遇到了同样的问题。对我而言,这是我的XIB的一个问题 - 我虽然是UIView的子类 - 所以相应地进行调整。我在IB中的错误是我将控件附加到“文件的所有者”而不是将它们附加到UIView。我敢肯定,在我缺乏经验的情况下会发生更大的事情 - 也许有经验的人可以详细说明。

希望有所帮助!