2011-10-30 29 views
0

基本上我已經從XML分析一些數據到一個NSMutableArray在appDelegate共享。加載數據到uipickerview與NSMutableArray位於應用程序委託

在我secondViewController我有一個uiPickerView,我想加載到它的數組的細節。

我的問題是......怎麼樣?

我已經簡要uiPickerView的工作之前,不得不加載數據中最先分配給uiPickerView像這樣:

titleDB = [[NSMutableArray alloc] init]; 
[titleDB addObject:@"MR"]; 
[titleDB addObject:@"Mrs"]; 
[titleDB addObject:@"Ms"]; 
[titleDB addObject:@"Miss"]; 
[titleDB addObject:@"DR"]; 
[titlePickerView selectRow:1 inComponent:0 animated:YES]; 

,但由於數據是從的appDelegate未來,我不知道我應該將其加載到uiPickerview中,是否與數據源有關?

我要求向我拋出代碼我只是要求最好的方式來做到這一點。

任何幫助將是巨大的

感謝 Jonn4y

回答

0

基本上,你想從代碼中隨機地訪問的appDelegate對象。這不是一個不尋常的要求。記住Objective C是C語言的超集。因此,您可以使用全局變量。出於上述原因,Cocoa程序中會有比應用程序委託更多的自然變量。所以,在你的appDelegate .h文件中,添加:

<MyAppDelegateClass> * appDelegate; 

替代MyAppDelegateClass您的appDelegate類名的名稱。然後,只需提供您的appDelegate的.h文件中任何你想要使用的appDelegate變量,只需使用(在你的例子):

[的appDelegate titleDB]

或創建一個本地伊娃:

的NSMutableArray * titleDB = [appDelegate titleDBData];

然後在您的應用程序委託方法didFinishLaunchingWithOptions中添加以下行:

appDelegate = self; 
+0

的幫助您好,謝謝,我已經試過這和它的所有鏈接正確,當我調用NSLOG我可以看到數據庫中的數據,但是當我嘗試'countryDB = appDelegate.countries;'它崩潰告訴我'終止應用程序由於未捕獲的異常'NSInvalidArgumentException',原因:' - [BookPhoto isEqualToString:]:無法識別的選擇器發送到實例0x6d70440' 'BookPhoto是我用來解析XML的文件,所以不知道爲什麼它的存在這裏稱爲,我得到了XML解析:http://www.iPhoneSDKArticles.com/2008/12/parsing-xml-files.html –

+0

countryDB是一個NSMutableArray和國家是NSMutableArray我有在我的代表(只是你知道我不願意使用titleDB)乾杯 –

+0

是BookPhoto文件嗎?或者一個字符串? isEqualToString:期望在它前面有一個字符串! –

1

這是一個常見的模式。您將需要訪問UIApplication的sharedApplication實例。因此,假如你的appDelegate類名爲YourAppDelegate,在YourAppDelegate和ViewController陣列伊娃是titleDB,那麼你可以在你的viewController的viewDidLoad方法做到這一點

YourAppDelegate *appDelegate=(YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 
// assuming you are using @property and @synthesize for your ivars 
self.titleDB=appDelegate.titleDB; 

好運

相關問題