2011-12-15 37 views
0

你好,我有一個非常簡單的問題,我已經初始化了一些變量,並在「viewDidLoad」方法上啓動了運動管理器更新,但是在完成使用後,我正在關閉窗口並返回到預覽窗口。我的問題是,每當我在故事板中打開一個窗口時,是否調用該方法。 (由於介紹說,它確實它時,它加載到內存不是屏幕)我的「viewDidLoad」每次在我第一次關閉它後打開同一個窗口時被調用?

我被告知窗口,前一個是它的代表這樣關閉窗口:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"Drawing"]) 
    { 
     DrawingViewController *temp = segue.destinationViewController; 
     temp.delegate = self; 
    } 

} 

和那麼當用戶點擊新窗口的關閉按鈕,它告訴代表(前一屏),收他:

- (IBAction)cancel:(id)sender 
{ 
    [self.delegate DrawingViewControllerDidCancel:self]; 
} 

這是收盤方法:

- (void)DrawingViewControllerDidCancel: (DrawingViewController *)controller 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

哦,如果有人會如此善良地告訴我爲什麼通過自我調整我正在關閉另一個窗口,(因爲我認爲自我是指代表而不是我想要關閉的代表)。

非常感謝!

回答

0

把一些日誌語句放在viewDidLoad方法中,這將很容易找到你自己。你不能指望被解散的視圖控制器在內存中閒置 - 由於內存不足,它可能隨時被卸載。你甚至打過電話temp;)

dismissModalViewController沿視圖控制器鏈過去了,你可以把它叫做模態控制器本身或呈現控制器,它具有相同的效果。當前呈現的模態視圖控制器被解僱。

從文檔:

如果目前幾個模式視圖控制器在連續,從而構築模式視圖控制器的堆棧,調用視圖控制器這種方法在堆棧中較低駁回其直接子視圖控制器和堆棧上的該子級上的所有視圖控制器。當發生這種情況時,只有最頂級的觀點纔會以動畫形式被解僱;任何中間視圖控制器都可以簡單地從堆棧中移除。最頂層的視圖使用其模式轉換樣式被解散,這可能與堆棧中較低視圖控制器使用的樣式不同。

+0

ooo你是一個真正的,哈哈或即時通訊非常愚蠢的大聲笑。反正它似乎是每次我點擊它加載它。關於第二件事,這意味着「dismissModalViewController」將關閉任何當前活動並顯示正確的模式視圖控制器? – Pochi 2011-12-15 08:58:02

相關問題