如何从其他类/视图停止位置更新?

时间:2012-03-05 22:59:35

标签: iphone objective-c ios

我正在构建一个应用程序,允许用户跟踪他们所做的各种“旅行”。

该应用包含两个视图。第一个视图包含2个按钮,允许用户启动和启动。停止当前的“旅行”。

按开始按钮会进入第二个视图,该视图基本上会在地图上显示当前行程。

我遇到的问题是停止旅行。当用户希望停止旅行时,他们应该只是在第一个视图中点击停止按钮。我想停止位置更新,因为它们不再需要。

问题是位置管理器在第二个视图中,所以我无法从第一个视图调用stopLocationUpdates方法。

我尝试过的: 我已经设置了NSNotification来告诉第二个视图停止位置更新。问题是只有在第二个视图再次加载时才会调用它。这没有用,因为在停止旅行时,第二个视图将永远不会被加载(直到另一个旅程开始)。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

首先,NSNotification完全没有关于视图控制器状态的线索。因此,如果它仅在加载时开始监听,那可能是因为您在加载时开始侦听通知。您也可以在指定的初始化程序中执行此操作,这可能会解决您的问题。

但是,您是否想重新考虑一起删除视图控制器?如果根本不使用它,那么为什么要首先将它保存在内存中?你可以简单地发布它。

答案 1 :(得分:0)

使用NSNotification是向应用程序的组件通知事件的正确方法。你应该研究一下为什么不起作用。或者,您可以在应用委托中指向两个视图,并通过调用[UIApplication sharedApplication].delegate;

从任何地方调用它

答案 2 :(得分:0)

我认为一个好的选择是:

  • 使用停止位置更新的方法在第二个视图中创建协议,并为此协议创建属性委托。

- 在第一个视图控制器中实现协议。

- 将第二个视图控制器的委托分配给第一个。

这应该可以正常工作