0

我有一个 UIView 子类,我根据触摸操作很多图形。所有 [self setNeedsDisplay] 调用似乎都很好。

但是,我使用了一个实例变量指针指向我的同一个 UIView 子类实例,然后尝试对其进行操作,然后从另一个 UIView 类调用 [UIViewSubClass setNeedsDisplay],而 DrawRect 永远不会被调用。您可以从哪里调用 setNeedsDisplay 是否有限制?

(当在另一个 UIView 子类上单击按钮时调用此方法。正在调用该方法,但不是 DrawRect)

-(IBAction)loadGrid2;
{
    tempSoundArray = musicGridView1.soundArray;
    [musicGridView1.soundArray setButtonArrayToNull];
    [musicGridView1 setNeedsDisplay];
    musicGridView1.soundArray = tempSoundArray;
    NSLog(@"loadGrid2 was called");
}
4

2 回答 2

1

drawRect: 只有在有意义的时候才会被调用;即,视图必须是可见的、在屏幕上的和脏的。你的 drawRect:曾经被调用过吗?当视图第一次出现在屏幕上时也应该调用它。

于 2009-06-17T23:07:20.833 回答
1

补充本:这很可能意味着您在其他地方遇到了问题。您的指针可能不是 nil 或其他无效,或者视图可能未正确添加到层次结构中。

您可能需要考虑不在视图中处理这种类型的行为,而是在视图控制器中处理。在视图控制器中控制行为并保存表示状态,不要子类化视图类。它将通过更少的“指针传递”来简化您的代码。这也将使调试此类问题变得更加容易。

如果您觉得您的视图控制器变得臃肿,请考虑在多个视图控制器之间拆分职责。

于 2009-06-18T06:03:48.083 回答