3

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

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

但是,当我调用setNeedsDisplay我的子视图时,什么也没有发生。

我猜当我的视图drawRect:被调用时,生成的图像被缓存在某处的支持中,这样当我调用setNeedsDisplay该支持时,该支持被重新绘制到屏幕上,但我的drawRect:调用再也不会被调用。

为什么drawRect:在创建单元格后不再调用?

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

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

4

1 回答 1

1

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

希望有帮助!

于 2011-05-13T07:20:06.343 回答