2011-12-15 57 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

相关问题