我的iOS应用程序中的位置一致性

问题描述 投票:-1回答:2

我正在研究基于位置的应用程序。

假设我有ViewController 1(RootVC)-> MountainView是当前位置。现在,用户从ViewController 1导航到另一个ViewController 2,并且如果用户更改了ViewController 2中的位置并移回ViewController,则可以选择更改ViewController 2中的位置,如果没有位置,则应使用新的位置进行更新,并请求API在ViewController 2中进行更改,因此不应再次执行API调用。如果用户从ViewController 2导航到ViewController 3,并且ViewView 3的位置发生变化,则情况相同,它应该反映在VC2和VC1中。

我曾考虑过使用委托,但是问题是,当我们更改VC2中的位置时,它将立即调用,它将调用VC1委托并加载页面,但是我只想在用户导航到VC1时加载页面。通知或观察者模式也是如此。

我可以在整个应用程序中使用和实现的任何设计模式。

ios
2个回答
0
投票

您可以使用viewDidAppear(){}委托方法和一些标志来获得想要的效果。使用委托模式来更新标志,并在viewDidAppear()上检查标志是否已更改,并相应地更新viewController。


0
投票

将当前位置存储在中央位置;您可以使用UserDefaults或全局变量(即使是松散的变量,在某些文件的顶部也没有命名空间,尽管应用程序委托的实例变量会更好)。这构成了真理的普遍来源。每次调用视图控制器的viewWillAppear时,它都会从真相的中央来源进行更新。

[在某些情况下,viewWillAppear将不是一个足够的事件(例如,如果用户更改了非全屏显示视图控制器中的位置),但是在您的问题中,它始终是在导航控制器上按下并弹出的,因此viewWillAppear可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.