0

Web サービスから配列を読み込んでピッカーに表示すると、すべて正常に動作します。私の配列には、質問のカテゴリごとに乱数の質問が含まれています。今私が欲しいのは、ピッカーの最後の行に「あなた自身の質問」が表示されるように、配列の最後に「あなた自身の質問」というエントリをもう1つ追加したいということです。これどうやってするの

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    UILabel *retval = (id)view;
    if (!retval) {
        retval= [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
    }

   // retval.text = [idAndNameArray objectAtIndex:row];
    if([pickerType isEqualToString:@"picker"])
    {
        retval.text = [idAndNameArray objectAtIndex:row];
    }
    else
    {
        retval.text = [quesArray objectAtIndex:row];
    }
    retval.font = [UIFont boldSystemFontOfSize:14];
    retval.numberOfLines = 3;
    return retval;
}

このコードは、Web サービスからフェッチされた行 (質問) の数のみを表示します。

編集1:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView
{

    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component
{
    if([pickerType isEqualToString:@"picker"])
    {
        return [idAndNameArray count];
    }
    else
    {
       return [quesArray count];
    }

}

編集2:

カスタムオブジェクト「あなた自身の質問」で別のNSMutableArrayを作成し、Webサービスから取得した配列を追加することで解決しました

NSMutableArray *customObj = [NSMutableArray arrayWithObject: @"test"];
 [quesArray addObjectsFromArray:customObj];
4

1 に答える 1

1

UIPickerViewDataSourceと呼ばれる のメソッドではpickerView:numberOfRowsInComponent:、配列のカウントに 1 を加えた値を返します ( )。実装return arr.count+1;したメソッドでは、がより大きいUIPickerVIewDelegate場合にテキストを含むラベルを返します( )。幸運を!componentarr.count-1if(row>(arr-1)){//return the label with 'Your own question'}

編集:

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component
{
    if([pickerType isEqualToString:@"picker"])
    {
        return [idAndNameArray count];
    }
    else
    {
       return [quesArray count]+1;
    }

}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    UILabel *retval = (id)view;
    if (!retval) {
        retval= [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
    }

   // retval.text = [idAndNameArray objectAtIndex:row];
    if([pickerType isEqualToString:@"picker"])
    {
        retval.text = [idAndNameArray objectAtIndex:row];
    }
    else
    {
       if(row>quesArray.count-1){
         retval.text = @"You own question";
       }
       else{
            retval.text = [quesArray objectAtIndex:row];
         }
        }
        retval.font = [UIFont boldSystemFontOfSize:14];
        retval.numberOfLines = 3;
        return retval;
    }
于 2013-04-16T10:36:45.520 に答える