Iphone 再次访问视图时为什么不调用awakeFromNib?
我想知道是否有一种方法相当于Iphone 再次访问视图时为什么不调用awakeFromNib?,iphone,objective-c,drawrect,Iphone,Objective C,Drawrect,我想知道是否有一种方法相当于awakeFromNib 我的应用程序有两个视图,第二个视图有一个子类(UIView),我用它来绘制 我使用一个从awakeFromNib调用的计时器来设置图形动画 - (void) awakeFromNib { timer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:selfselector:@selector(ReDraw) userInfo:nil repeats:YES]; } - (v
awakeFromNib
我的应用程序有两个视图,第二个视图有一个子类(UIView
),我用它来绘制
我使用一个从awakeFromNib
调用的计时器来设置图形动画
- (void) awakeFromNib
{
timer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:selfselector:@selector(ReDraw) userInfo:nil repeats:YES];
}
- (void) ReDraw
{
i++;
[self setNeedsDisplay];
}
现在,当我返回到第一个视图并返回到此视图时,图形仍处于打开状态(不再调用awakeFromNib)
当我回到第一个视图时,计时器没有停止。我希望返回时计时器停止,再次访问第二个视图时重新启动图形
方法
viewdidLoad
和initWithFrame:
在子类中不起作用。awakeFromNib
,viewdidLoad
和initWithFrame
都是在对象的初始化阶段调用的。如果对象已创建,则不会再次调用这些方法。您可以使用视图的setNeedsDisplay
方法强制视图绘制自身。ui视图甚至没有viewDidLoad方法,只有uiViewController。VIEW将出现和VIEW将消失如何?我的意思是,当你显示其他视图时,你可以在那里停止计时器。它没有VIEWWILLEXPEND和VIEWWILLEXPEASE“它”是什么样的类?它是一个Objective C类,是UIView的一个子类。默认情况下,方法initWithFrame与drawRect一起存在,但从未被调用。因此,当我返回到第一个视图时,如何停止计时器,并在再次进入该视图时重新启动计时器?如果创建计时器,则将其作为实例变量保留在控制器类中(可能是UIViewController)。当您切换视图时,将使计时器无效,然后在必要时重新启动计时器。好的。。。但是我不能再次启动它,因为我第一次使用awakeFromNib来使用计时器。我甚至不能在类内调用方法(使用drawRect方法),该类是另一个类的UIview子类。