2011-10-30 10 views
0

に配置します。基本的にXMLからのデータを解析して、appDelegateで共有されるNSMutableArrayにします。データをuipickerviewに読み込んで、アプリケーションデリゲート

私の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ファイルに追加:あなたのappDelegateクラス名の名前の

<MyAppDelegateClass> * appDelegate; 

代替のMyAppDelegateClassを。 *

NSMutableArrayの:それからちょうどどこでもあなたがappDelegate変数を使用したい、とだけ(あなたの例では)を使用し、あなたのappDelegateの.hファイルが含ま:

[appDelegate titleDB]

をまたはローカルIVARを作成titleDB = [appDelegate titleDBData];

appDelegate = self; 
+0

こんにちはおかげでこれを行うことがYourAppDelegateとのViewControllerの配列IVARがある、あなたのappDelegateクラスがYourAppDelegate命名されたと仮定すると、私はこれを試してみました私はNSLOGを呼び出すと、データベースからデータを見ることができますが、 'countryDB = appDelegate.countries; 'を試してみると、' NCSnvalidArgumentException'、理由: - [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

これが一般的なパターンです:

は、次にアプリのデリゲートメソッドのdidFinishLaunchingWithOptionsでは、次の行を追加します。 UIApplicationのsharedApplicationインスタンスにアクセスする必要があります。だから、titleDBは、あなたがあなたのViewControllerのviewDidLoadメソッド

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

幸運に助けを

関連する問題