将数据从初始视图控制器传递到最后一个视图控制器

时间:2014-07-18 15:40:29

标签: ios objective-c

如在主题中所写,我找不到将CLLocation数据从初始视图控制器传递到最后一个视图控制器的方法。

我的应用程序有一个4视图控制器(A-B-C-D)。 在初始视图控制器(A)中,我获得存储在CLLocation *currentLocation.中的位置 D视图控制器必须根据存储在视图控制器A currentLocation中的位置返回一个列表。

我如何得到它?

我尝试使用NotificationCenter但它不起作用。有人能帮助我吗?

3 个答案:

答案 0 :(得分:2)

我很快就想到了3个解决方案:

  • 将值存储到Singleton(不一定是AppDelegate)
  • 将值存储到用户默认值(NSUserDefaults)
  • 在实例化它们时(通过@property声明)将值传递给所有视图控制器
  • 如果您的控制器链接到同一导航控制器,那么您可以获取rootViewController,它可能是您的" A"控制器。

正如codebad所说,我们需要更多细节以更好的方式帮助您:)

答案 1 :(得分:1)

一个选项是将CLLocation值存储在第一个ViewController的AppDelegate中,然后从最后一个ViewController中的AppDelegate读取。

您可以这样编码:

AppDelegate.h

 #define UIAppDelegate \
 ((AppDelegate *)[UIApplication sharedApplication].delegate)


 @property CLLocation *gMyLocation;

ViewControllerA.m

 #import "AppDelegate.h"
 ///
 UIAppDelegate.gMyLocation = //calculated location value

ViewControllerD.m

 #import "AppDelegate.h"
 ///
 NSLog(@"%@", UIAppDelegate.gMyLocation)

希望它有所帮助..因为使用AppDelegates作为单身could be bad design habit.

,需要更多有关您的应用程序的信息才能实现更高级的实施

答案 2 :(得分:0)

看一下这个单例LocationController。

https://github.com/hackerinheels/locationcontroller

有了这个,您只需拨打一个电话就可以到达任何地方。

CLLocation *currentLocation = [[LocationController sharedLocationInterface] getCurrentLocation];

确保通过调用

在appdelegate中初始化位置控制器
[LocationController sharedLocationInterface]