2011-04-06 108 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

相關問題