我正在使用UINavigationController:在我的第一个视图中有一个UIButton使用此代码推送另一个视图
- (IBAction)gototrack:(id)sender {
map *map2 = [[map alloc] initWithNibName:@"map" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:map2 animated:YES];
[map2 release];
}
在第二个视图中,有一个指示对象位置的地图。 这个对象移动得很快,所以我需要每秒刷新一次位置:我用NSTimer来做这个,它调用计算新坐标并刷新地图的方法。 好的,一切正常,但是当用户弹出视图(使用NavigationBar中的常用按钮)时,无法释放第二个视图,因为NSTimer仍在工作!
当用户弹出第二个视图时,如何使NSTimer无效并释放NSTimer? 是否有一些自动调用的方法? (我试过但没什么)
谢谢!
答案 0 :(得分:1)
您可以尝试使NSTimer
或-viewWillDisappear
中的viewDidDisappear
无效。
viewWillDisappear
:
调用此方法是为了响应视图从其窗口中移除或被另一个视图覆盖。在实际删除或覆盖视图之前以及在配置任何动画之前调用此方法。
子类可以覆盖此方法并使用它来提交编辑更改,重新调整视图的第一个响应者状态或执行其他相关任务。例如,您可以使用此方法还原对视图首次显示时在viewDidDisappear:方法中创建的状态栏方向或样式的更改。如果重写此方法,则必须在实现中的某个时刻调用super。
有关详细信息,请查看UIViewController reference。
答案 1 :(得分:0)
很简单,就像这样:[//你的nstimer //无效];