iOSアプリケーションで作業していて、文字列とUIImageViewsの2つのコンポーネントを含むPickerViewを表示する必要があります。私もするビューコントローラを割り当てたiOS viewDidLoadメソッドで使用されない式結果
:View Controllerのクラス拡張では、私はNSArrayのいわゆる「スイート」UIImagesを保持し、viewDidLoadメソッドで配列を移入するために作成しましたPickerViewのデリゲートとデータソース私はPickerViewの二つの成分を識別するためのグローバル変数にしている:
#define numberComponent 0
#define suiteComponent 1
と、次のデリゲートメソッド実装しました:シミュレータで
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(nullable UIView *)view
{
if (component == suiteComponent){
UIImageView *imageView = (UIImageView *) view;
if(!imageView){
imageView = [[UIImageView alloc] initWithImage: self.suites[row]];
}
imageView.image = self.suites[row];
return imageView;
}
else{
UILabel *label = (UILabel *) view;
if(!label){
label = [[UILabel alloc] init];
}
label.text = self.numbers[row];
return label;
}
}
を、UILabelsを含むピッカーコンポーネントがうまくレンダリングされます。 UIImageViewsを含有する成分は表示されません、と私はUIImagesの配列が使用されていないので、それは推測しています:
更新: 場合(コンポーネント== suiteComponent)内のブロック 決して到達されません。私の理解が正しければ
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
ので、UIPickerViewは、最終的に第二成分をレンダリングするためのデリゲートへの呼び出しを行う必要があります。私は、このデータソースのメソッドを持っています。しかし、私がそれをデバッグすると、デリゲートメソッドの行パラメータは0から4の間ですべての呼び出しにとどまり、コンポーネント変数は0にとどまります。
私は何か助けていただきありがとうございます!
[このUIPickerViewに画像を配置するにはどうすればいいですか?](http://stackoverflow.com/questions/11298603/how-can-i-put-an-image-in-this-uipickerview) –
これは適切な委任方法ではありません。 titleForRowはNSSTringを返します.YOuはviewForRowを使う必要があります! –
質問ごとに1つの問題のみを投稿してください。 – rmaddy