0

我正在使用 UINavigationController:在我的第一个视图中,有一个 UIButton 使用此代码推送另一个视图

- (IBAction)gototrack:(id)sender {
    map *map2 = [[map alloc] initWithNibName:@"map" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:map2 animated:YES];
    [map2 release];
}

在第二个视图中,有一张地图,它指示对象的位置。这个对象移动得很快,所以我需要每秒刷新一次位置:我正在使用 NSTimer 执行此操作,它调用计算新坐标并刷新地图的方法。好的,一切正常,但是当用户弹出视图(使用导航栏中的常用按钮)时,无法释放第二个视图,因为 NSTimer 仍在工作!

当用户弹出第二个视图时,我该怎么做才能使 NSTimer 无效并释放?是否有一些自动调用的方法?(我试过但没有)

谢谢!

4

2 回答 2

1

您可以尝试使NSTimerin-viewWillDisappearviewDidDisappear.

viewWillDisappear

调用此方法以响应从其窗口中删除或被另一个视图覆盖的视图。在实际移除或覆盖视图之前以及配置任何动画之前调用此方法。

子类可以覆盖此方法并使用它来提交编辑更改、退出视图的第一响应者状态或执行其他相关任务。例如,您可以使用此方法恢复对第一次呈现视图时在 viewDidDisappear: 方法中对状态栏的方向或样式所做的更改。如果你重写了这个方法,你必须在你的实现中调用 super 。

查看UIViewController 参考以获取更多详细信息。

于 2011-07-13T15:51:19.313 回答
0

很简单,就像这样:[//你的 nstimer// 无效];

于 2011-07-13T15:59:42.993 回答