2

UIPickerView1列10行に設定できるようにしたい。この列内には、タイトル(UILabel)とその横にある画像があります(画像は星であり、1〜3個の星が可能です)。画像を「showImages」という配列に入れました。「currentNames」UILabelsという配列にを入れました。NSString両方の配列のインデックスは互いに対応しています。何らかの理由で、実装時にコードが機能しません

 - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
    forComponent:(NSInteger)component reusingView:(UIView *)view

これは、「行」を使用して配列にインデックスを付けているためだと思いますが、これは正しくありません。誰かが私がこれを正しく行うことができる方法を知っていますか?よろしくお願いします。残りのコードは以下のとおりです。

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
    forComponent:(NSInteger)component reusingView:(UIView *)view {

NSString *imageName= [imageNames objectAtIndex:row];

if(component == 0)
{
NSString *imageName= [imageNames objectAtIndex:row];
        UIImage *img = [UIImage imageNamed:imageName];
        UIImageView *temp = [[UIImageView alloc] initWithImage:img];        
        temp.frame = CGRectMake(120, 15,70, 27);

    UILabel *channelLabel = [[UILabel alloc] initWithFrame:CGRectMake(-80, 0, 320, 60)];
    channelLabel.text = [currentLottoNames objectAtIndex:row];
    channelLabel.textAlignment = UITextAlignmentLeft;
    channelLabel.backgroundColor = [UIColor clearColor];
    channelLabel.font = [UIFont boldSystemFontOfSize:20];
    channelLabel.backgroundColor = [UIColor clearColor];
    channelLabel.shadowColor = [UIColor whiteColor];
    channelLabel.shadowOffset = CGSizeMake (0,1);

    UIView *tmpView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 110, 60)];

    [tmpView insertSubview:channelLabel atIndex:0];
    [tmpView insertSubview:temp atIndex: 1];
      i++;
      return tmpView;
     }
   }
4

1 に答える 1

2

それがどのように間違っているのかわかりません。渡される行パラメーターは0から[imageNamescount]-1になるはずなので、範囲外になることはありません。行をログに記録すると、[imageNames count]-1よりも大きい数値が得られますか?[imageNames count]をpickerView:numberOfRowsInComponent:メソッドにも記録して、自分が思っているものが得られることを確認する必要があります。

于 2012-09-24T02:11:25.417 に答える