【问题标题】:stop location updates from the iphone UI?从 iphone UI 停止位置更新?
【发布时间】:2011-06-23 18:18:24
【问题描述】:

是否可以从 iphone 的 UI 开始/停止位置更新?我需要从应用程序中显示我的位置,除非我单击“停止”然后再次“开始”。

我似乎无法做到这一点...我的位置已正确显示,并且我还创建了两个 IBButton 并为每个按钮创建了一个函数,但是,当我单击每个按钮时,我的应用程序崩溃了那些按钮。我把这些函数放在 viewcontroller.m 下。

我对此有点陌生,因此我们将不胜感激。谢谢!

  • (IBAction)startUpdating: (CLLocation *)location {

    [位置 startUpdatingLocation];

    }

  • (IBAction)stopUpdating: (CLLocation *)location {

    [位置停止更新位置];

    }

【问题讨论】:

    标签: iphone xcode4 location core-location


    【解决方案1】:

    start/stopUpdatingLocation 是CLLocationManager 实例方法,而不是CLLocation 实例方法...所以创建一个CLLocationManager 实例。

    .h

    @interface someClass:somesuperclass{
    CLLocationManager * locationManager;
    BOOL updating;
    }
    -(IBAction)toggleUpdating:(id)sender;
    
    @end
    

    .m 在视图加载/或初始化循环中的某处:

    -(void)viewDidLoad{
      [super viewDidLoad];
      locationManager = [[CLLocationManager alloc] init];
     }
     -(void)viewDidUnload{
     [locationManager stopUpdatingLocation];
     [locationManager release];
     [super viewDidUnload];
     }
    
    -(IBAction)toggleUpdating:(id)sender
    {
         if(!updating)
         {
             [locationManager startUpdatingLocation];
         }else{
             [locationManager stopUpdatingLocation];
         }
         updating = !updating;
    }
    

    您上面的操作也永远不会起作用,因为操作中冒号后面的东西将是发送操作的对象,在您的情况下是 UIButton。

    【讨论】:

    • 谢谢,这真的很有帮助!不过有两个简单的问题:1. 我应该把所有这些代码放在哪里?写在视图控制器中可以吗?我放入了 viewDidLoad 方法,但它没有编译......另外:2)我如何将启动/停止 UIBUttons 与这个实现结合起来?我想通过两个按钮获得用户输入:开始/停止。谢谢!
    • 我更改为更清楚一点。您可以使用一个按钮并根据updating 更改按钮的名称,或者将逻辑拆分为2 个动作。或者将 UIButtons 的标签设置为 0 和 1,然后检查 sender.tag 以查看哪个按钮发送了操作,您有几个选择。
    • 谢谢!所以我最终这样做了 - (IBAction)startUpdating { CLLocationManager *locationManager = [[CLLocationManager alloc] init]; [locationManager startUpdatingLocation]; } - (IBAction)stopUpdating { CLLocationManager *locationManager = [[CLLocationManager alloc] init]; [locationManager 停止更新位置];有两个 IBButton,但现在当我单击停止时,它会进入此方法,但我不断在控制台上获取位置更新...stopUpdatingLocation 真的停止了吗?或者我在这里错过了什么?
    • 那是泄漏的,不会工作,你只需要使用一个CLLocationManager,在.h文件中声明它
    • 我全部更改并按照您的建议进行操作,但是,停止更新仍然会在控制台上显示位置更新...
    猜你喜欢
    • 2011-10-02
    • 2023-03-10
    • 2017-05-30
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    相关资源
    最近更新 更多