2012-04-19 18 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

相關問題