2011-12-06 4 views
0

レコードをデータベースに挿入し、ルックアップテーブルからそのデータベースのアイテムをプルして、定義済みのフィールドに適切な項目があるようにするアプリケーションを構築しています。明らかに、ピッカーはこの方法の最善のルートですが、私は問題に遭遇しています。 2つの異なるページがあり、2つのページの間には約15種類のピッカーがあります。今私がする必要があるのは、ユーザーがフィールドを選択したときにポップアップされるようにピッカーをロードすることです。iOS 5プログラムでピッカーに配列を追加する

私が見つけたすべてのオンラインチュートリアルと例は、GUIエディタを使用してピッカーとデータソースをリンクする方法と、ピッカーのための単一のデータソースを別のファイルで使用する方法です(これは私が行っていません) 。

NSMutableArrayを呼び出したときにピッカーにロードする方法を教えてください。

ありがとうございます!

答えて

3

はそれがUIPickerViewDataSourceUIPickerViewDelegateに適合として定義され、かつ、ヘッダに定義された@property (retain, nonatomic) NSMutableArray *dataArray;を有し、必要なすべてのデータ・ソース/デリゲートメソッドを実装するデータソースとデリゲートクラスを持ちます。データソース/デリゲートクラスのメソッド(- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)componentなど)にdataArrayから文字列などをロードさせます。次に、ピッカーを作成/変更するときは、次の操作を行います。

MyPickerSource *source = [[MyPickerSource alloc] init]; 
source.dataArray = [NSMutableArray arrayWithArray:<PreloadedArray>]; 
[picker setDelegate:source]; 
[picker setDataSource:source]; 
[picker reloadAllComponents]; // If re-using an old picker 
[source release]; 
[self addSubview:picker];  // If creating a new picker 

希望はすべてクリアです!

+0

私はこれを実装しました。私はそれを完全に機能させるためにいくつかの別のツイークを持っていますが、私はそのピッカーの実用的なモデルを持っています。ありがとう! –

+0

素晴らしい!将来の参照のために、あなたは何を変更しましたか? – jrtc27

2

は、あなたは、あなたのNSMutableArrayからデータを引き出すことができ、これらの方法を通じてUIPickerViewDataSourceUIPickerViewDelegate、および実装に必要な機能、すなわちnumberOfRowsInComponent:titleForRow:を、使用したいです。

重要な考慮事項は、更新する必要があるときにピッカービューでreloadAllComponentsに電話することです。 selectRow: inComponent: animated:NOを使用して、リスト内のコンポーネントを更新するときにピッカーを適切な選択にスクロールしたままにすることもできます。

関連する問題