21

UIPickerView3つのコンポーネントに2つが設定されてNSMutableArraysいます(2つのコンポーネントには同じ配列があります)。

チュートリアルによると:

//PickerViewController.m
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

NSLog(@"Selected Color: %@. Index of selected color: %i", [arrayColors objectAtIndex:row], row);
}

UIAlertView しかし、ユーザーがUIButtonに触れた後、各コンポーネントに対して選択された行を表示したいと思います。

これを行う方法はありますか?またはUILabels、バッファとして3invisibleを使用する必要がありますか?

前もって感謝します。

4

2 に答える 2

45

したがって、ボタン アクション メソッドでは、次のようなことができます。

- (IBAction) showAlert {
  NSUInteger numComponents = [[myPickerView datasource] numberOfComponentsInPickerView:myPickerView];

  NSMutableString * text = [NSMutableString string];
  for(NSUInteger i = 0; i < numComponents; ++i) {
    NSUInteger selectedRow = [myPickerView selectedRowInComponent:i];
    NSString * title = [[myPickerView delegate] pickerView:myPickerView titleForRow:selectedRow forComponent:i];
    [text appendFormat:@"Selected item \"%@\" in component %lu\n", title, i];
  }

  NSLog(@"%@", text);
}

これは、(適切なデータソースとデリゲート メソッドを使用して) 情報を取得する絶対的な正式な方法ですが、(設定によっては) 選択した行を取得して、モデルから直接情報を引き出す方が簡単な場合があります。デリゲート メソッドを使用する代わりに、

于 2009-09-07T15:31:39.237 に答える