2012-04-19 51 views
1

在MyViewController.h声明:如何将应用程序委托引用分配给viewDidLoad中的视图控制器属性?

AppDelegate *appDelegate; 
@property (nonatomic, strong) AppDelegate *appDelegate; 

在MyViewController.m的viewDidLoad中:

self.appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
localAppDelegate= (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

出于某种原因的appDelegate保持为空,但localAppDelegate正确分配。

为什么self.appDelegate得不到正确的分配?

+1

什么是定义应用程序委托实例的财产?! – 2012-04-19 08:39:23

+0

我正在努力通过试图获得不同的视图控制器来共享信息。我试图通过将数据作为对象存储在应用程序委托中,然后使用上面的代码访问它。当我在viewDidLoad中访问它时,localAppDelegate工作正常,但是当我尝试在自定义导航栏按钮的方法内执行相同操作时,localAppDelegate不起作用...所以我想将指针存储到应用程序委托中viewDidLoad中。我是新来的ObjC ... – Erik 2012-04-19 15:20:29

+0

请检查我的答案。 – 2012-04-19 15:33:28

回答

2

以及Erik根据您的评论localAppDelegate应该始终可以访问,但一定要将AppDelegate头文件导入到您想要在其中使用appDelegate的类..如果您需要存储变量的用户设置,常用变量..等等我更喜欢使用NSUserDefaults它的简单,并建议在这样的情况下使用..这里是一个简单的例子来保存和NSUserDefaults

  1. 得到的字符串设置:

    NSString *str = @"Malek";
    [[NSUserDefaults standardUserDefaults] setValue:str forKey:@"myName"]; [[NSUserDefaults standardUserDefaults] synchronize];

2.to得到:

NSString *myName = [[NSUserDefaults standardUserDefaults] valueForKey:@"myName"]; 
+0

谢谢,这似乎更简单...我会尝试。 – Erik 2012-04-19 15:40:20

+0

@Erik如果我的答案帮助你,请点击答案旁边的勾号将其标记为已接受的答案。 – 2012-04-23 14:47:30

相关问题