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