1

UIPickerView で行のループが発生するアプリを開発しています。誰でも私を助けてもらえますか?誰かが解決策を投稿してくれれば非常に役立ちます。UIPickerView の行を、終点を持たずに循環的に連続的にスクロールしたい。

4

3 に答える 3

1

可能です。必要な人は、これを試しみてください。

于 2011-05-26T06:49:32.697 に答える
1

ありえないと思います。値のリストを何度も繰り返し、途中からユーザーを開始する人がいると聞いたことがあります。

于 2009-11-24T01:18:49.093 に答える
0

それは機能します。メモリを監視するだけです。表示されていないアイテムは保存されないため、リストが膨大になる可能性があると述べました。心配な場合はプロファイラーで確認してください。行数を大きな数に設定し、高い値から開始するのと同じくらい簡単です。ユーザーが非常に長い時間ホイールをスクロールする可能性はほとんどありません。たまたま、彼らは底を打ってしまうでしょう。

(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    // Near-infinite number of rows. use NSIntegerMax, if memory problem, use less say 2000
    return 2000;
}

(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    // Row n is same as row (n modulo numberItems).
    return [NSString stringWithFormat:@"%d", row % numberItems]; // or your strings (this is for double.  numberItems is your list size.
}

(void)viewDidLoad {
    [super viewDidLoad];

    self.pickerView = [[[UIPickerView alloc] initWithFrame:CGRectZero] autorelease];
    // ...set pickerView properties... Look at Apple's UICatalog sample code for a good example.
    // Set current row to a large value (adjusted to current value if needed).
    [pickerView selectRow:3+1000 inComponent:0 animated:NO]; //pick about half the max you made earlier or about 100000 if using NSIntegerMax
    [self.view addSubview:pickerView];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    NSInteger actualRow = row % numberItems; //nb numberItems is your list size
    // ...
}

ジョン

于 2013-03-03T01:59:40.753 に答える