从另一个类的UIView调用setNeedsDisplay
问题描述:
我有一个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");
}
答
的drawRect:当它是有意义才会被调用;即视图必须是可见的,屏幕上的和脏的。您的drawRect:有没有叫?当视图首次出现在屏幕上时也应该调用它。
答
要添加到本: 这很可能意味着你在其他地方有问题。您的指针可能不是零或无效,或者视图可能无法正确添加到层次结构中。
你可能想要考虑不在视图内处理这种类型的行为,而是在视图控制器中。控制行为并在视图控制器中保存呈现状态,并且不要继承视图类。它将简化您的代码,减少“指针传递”。这也将使调试这种类型的问题更容易。
如果您觉得您的视图控制器变得臃肿,请考虑在多个视图控制器中分担责任。