0

pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)rowinComponent:(NSInteger)component動作を理解するのに苦労しています

ピッカーを設定し、NSArrayにデータを入力させました。実行しようとしているのは、選択した行の画像を表示することです。私は試した:

  - (void)viewDidLoad
{


////arrays & objects
arrStatus = [[NSArray alloc] initWithObjects:@"Appstorelogo",@"app",nil];
   //number of colums and rows etc of picker
 }
  -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
 //One column
return 1;
 }

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:   (NSInteger)component
{
//set number of rows
return arrStatus.count;


 }

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row f orComponent:(NSInteger)component
 {
//set item per row
return [arrStatus objectAtIndex:row];

}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)rowinComponent:  (NSInteger)component

{


  [imageview setImage:[arrStatus objectAtIndex:row]];

}

しかし、「行」が宣言されていないというエラーが表示されますか?ここ: [imageview setImage:[arrStatus objectAtIndex:row]];

4

1 に答える 1

1

デリゲートメソッドが間違っているように見えます。

あなたが持っているもの:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)rowinComponent:  (NSInteger)component {

それがどうあるべきか:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

(NSInteger)rowinComponentの間にスペースがあることに注意してください。行はローカル変数の名前であり、メソッドの名前の一部ではないため、これは重要です。

また

その配列に画像ではなく文字列を入力したようです。[imageview setImage:..]が必要な場合は、2つのUIImageを作成し、それらを配列に配置することをお勧めします。メソッドが正しく機能しています。

アプリケーションバンドル内にあるイメージでUIImageを作成するには、次の構文を使用します。

UIImage *image = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"AppleStoreLogo" ofType:@"jpg"]];

**注画像をアプリケーションバンドルに正しく追加したことを確認してください。これを行うには、まずアプリのフォルダーを含む画像をどこかに配置します。次に、その画像をクリックしてXCodeのリソースにドラッグします。XCodeは、イメージをバンドルに追加するかどうかを尋ねてきます。[はい]を選択します。それでおしまい :)

于 2012-07-30T18:44:34.883 に答える