查看更改时执行某些操作

时间:2013-04-19 11:55:55

标签: ios objective-c xcode cocoa-touch

我正在开发一个带有Tab View Controller和两个互补视图的iOS应用程序。 其中一个使用CoreLocation API来获得当前速度,因此,它使用了大量电池。

我知道:

[locationManager stopUpdatingLocation];

我可以停止速度更新,但我希望在用户更改视图时执行此操作。

这可能吗?

3 个答案:

答案 0 :(得分:2)

将此添加到您想要位置更新的标签项的ViewController

- (void)viewWillAppear:(BOOL)animated {    

    // Start location manager
    [locationManager startUpdatingLocation];

    [super viewWillAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated {

    // Stop location manager
    [locationManager stopUpdatingLocation];

    [super viewWillDisappear:animated];
}

当您的ViewController出现时,位置管理器会在启动时停止,并在消失时停止

答案 1 :(得分:0)

在执行更改页面的操作时,只需添加此[locationManager stopUpdatingLocation];即可。

答案 2 :(得分:0)

您需要实现UITabbarController的委托。然后你得到:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

您可以返回YES并停止locationManager


- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    tabBarController.delegate = self; //you need an iboutlet to get the tabbar
    [window addSubview:tabBarController.view];
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 
{
    if([viewController respondsToSelector:@selector(locationManager)])
        [[viewController locationManager] stopUpdatingLocation]; //your viewController needs to expose the locationManager as a property
    return YES;
}