Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 再次访问视图时为什么不调用awakeFromNib?_Iphone_Objective C_Drawrect - Fatal编程技术网

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子类。