【问题标题】:iphone-dev: Using variable from appDelegate in MapViewControlleriphone-dev:在 MapViewController 中使用 appDelegate 中的变量
【发布时间】:2012-07-13 11:18:39
【问题描述】:

所以在我的 appDelegate 中有一系列事件,如下所示:

AppDelegate.m

#import "AppDelegate.h"
#import "ListViewController.h"
#import "Event.h"
#import <RestKit/RestKit.h>


@implementation AppDelegate{
    NSMutableArray *events;

    /* for test data */
    NSMutableArray *titles;
}


@synthesize window = _window; ...

我想像这样在视图控制器中访问这个事件数组:

MapViewController.m

#imports ...

...

-(void) viewDidLoad{
    [super viewDidLoad];

    [worldView addAnnotation:[ACCES_EVENTS_HERE objectAtIndex:int]; // <------

    NSLog(@"Loadded the view for MapViewController");
}

我该怎么做? 其次,有没有比 viewDidLoaD 更好的地方在地图上添加事件? (事件将来自数据库,因此会有很多事件)

【问题讨论】:

  • 从数据库加载是什么意思?您会从互联网上的某些服务器/服务接收它们吗?如果是这样,那么看看异步加载。这可以防止应用程序在加载数据时冻结。
  • 你应该创建一个属性并在你的 appDelegate 中合成它以便稍后访问数据。
  • 它将来自基于休息的服务器。而且,如果我创建属性并合成它,视图控制器将能够访问它吗?我只需要一个这样的变量,所以它真的不是一个属性

标签: objective-c xcode class ios5 mapkit


【解决方案1】:

我认为在应用程序委托上存储这样的变量是个坏主意,但如果您需要访问权限,您可以获取参考

id<UIApplicationDelegate> myDelegate = [[UIApplication sharedApplication] delegate]

您需要将其转换为您的委托类以访问变量

【讨论】:

  • 如果我错了,请纠正我,但他还需要为他在 appDelegate 中声明的对象创建属性,对吧?
  • 要么创建属性,要么为他在上面显示的 ivars 实现 setter 和 getter 是的。我假设这是从上面的应用程序委托 sn-p 完成的
猜你喜欢
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 2015-04-13
  • 1970-01-01
相关资源
最近更新 更多