2011-04-06 169 views
1

我想知道是否有一种方法相当于awakeFromNib。为什么awakeFromNib在再次访问视图时未被调用?

我面临的问题是如下:
我的应用程序有2个视图和第二视图具有一个子类(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不子类里面工作。

谢谢

+0

UIViews甚至不具备的viewDidLoad方法只UIViewControllers。 viewWillAppear和viewWillDisappear会怎么样?我的意思是当你显示其他视图时,你可以停止计时器。 – 2011-04-06 19:55:16

+0

它没有viewWillAppear中和viewWillDisappear – R3D3vil 2011-04-06 20:06:24

+0

什么样的班是“它”? – 2011-04-06 20:11:17

回答

1

awakeFromNibviewdidLoadinitWithFrame期间对象的初始化阶段都被调用。如果该对象已经创建,那么这些方法将不会再被调用。您可以使用视图的setNeedsDisplay方法强制视图自行绘制。

+0

那我该如何停止计时器,当我回到我的第一个视图并再次从头开始时,我再次进入视图? – R3D3vil 2011-04-06 20:07:47

+0

您可以创建计时器,并将其保留为控制器类中的实例变量(也许是UIViewController)。当您切换视图使您的计时器无效时,如果必须再次启动它。 – David 2011-04-06 21:15:06

+0

好的...但我不能再启动它,因为我使用awakeFromNib第一次使用定时器。我甚至无法调用类中的方法(使用drawRect方法),这是另一个类的UIview的子类。 – R3D3vil 2011-04-08 16:06:51

相关问题