2009-06-17 78 views
0

我有一个UIView子类,我操纵了很多基于触摸的图形。所有[self setNeedsDisplay]调用似乎都很好。但是,我使用了一个实例变量指针指向我的同一个UIView子类实例,然后尝试操作它,然后从另一个UIView类调用[UIViewSubClass setNeedsDisplay],并且DrawRect从不被调用。是否有限制,你可以从哪里调用setNeedsDisplay?从另一个类的UIView调用setNeedsDisplay

(当被点击另一个UIView子类的按钮时调用此方法的方法被调用,但不能的drawRect。)

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

回答

1

的drawRect:当它是有意义才会被调用;即视图必须是可见的,屏幕上的和脏的。您的drawRect:有没有叫?当视图首次出现在屏幕上时也应该调用它。

1

要添加到本: 这很可能意味着你在其他地方有问题。您的指针可能不是零或无效,或者视图可能无法正确添加到层次结构中。

你可能想要考虑不在视图内处理这种类型的行为,而是在视图控制器中。控制行为并在视图控制器中保存呈现状态,并且不要继承视图类。它将简化您的代码,减少“指针传递”。这也将使调试这种类型的问题更容易。

如果您觉得您的视图控制器变得臃肿,请考虑在多个视图控制器中分担责任。