我正在构建一个应用程序,允许用户跟踪他们所做的各种“旅行”。
该应用包含两个视图。第一个视图包含2个按钮,允许用户启动和启动。停止当前的“旅行”。
按开始按钮会进入第二个视图,该视图基本上会在地图上显示当前行程。
我遇到的问题是停止旅行。当用户希望停止旅行时,他们应该只是在第一个视图中点击停止按钮。我想停止位置更新,因为它们不再需要。
问题是位置管理器在第二个视图中,所以我无法从第一个视图调用stopLocationUpdates方法。
我尝试过的: 我已经设置了NSNotification来告诉第二个视图停止位置更新。问题是只有在第二个视图再次加载时才会调用它。这没有用,因为在停止旅行时,第二个视图将永远不会被加载(直到另一个旅程开始)。
提前感谢您的帮助。
答案 0 :(得分:1)
首先,NSNotification
完全没有关于视图控制器状态的线索。因此,如果它仅在加载时开始监听,那可能是因为您在加载时开始侦听通知。您也可以在指定的初始化程序中执行此操作,这可能会解决您的问题。
但是,您是否想重新考虑一起删除视图控制器?如果根本不使用它,那么为什么要首先将它保存在内存中?你可以简单地发布它。
答案 1 :(得分:0)
使用NSNotification
是向应用程序的组件通知事件的正确方法。你应该研究一下为什么不起作用。或者,您可以在应用委托中指向两个视图,并通过调用[UIApplication sharedApplication].delegate;
答案 2 :(得分:0)
我认为一个好的选择是:
- 在第一个视图控制器中实现协议。
- 将第二个视图控制器的委托分配给第一个。
这应该可以正常工作