1
A
答えて
5
私は実際にそれが円形作るためにその可能性はないと思うが、あなたは偽物それことができます。
#define kRowsInPicker 10000
- (void)viewDidLoad {
NSArray *localPickerData = [[NSArray alloc] initWithObjects:
@"Ottawa", @"Toronto", @"Montreal", @"Winnipeg",
@"Saskatchewan", @"Iqaluit", @"Edomonton", nil];
[self setPickerData:localPickerData];
[localPickerData release];
UIPickerView *localPicker = [[UIPickerView alloc] initWithFrame:
CGRectMake(0, 0, 320, 216)];
[localPicker setDelegate:self];
[localPicker setDataSource:self];
localPicker.showsSelectionIndicator = YES;
NSInteger selectedRow = 0;
[localPicker selectRow:(((NSInteger)((kRowsInPicker/2)/[pickerData count])) * [pickerData count]) + (selectedRow%[pickerData count]) inComponent:0 animated:NO];
[self setPicker:localPicker];
[localPicker release];
[[self view] addSubview:picker];
[super viewDidLoad];
}
#pragma mark -
#pragma mark UIPickerViewDataSource methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
// usually "return [pickerData count];"
return kRowsInPicker; // 10,000 is good, if you add a few more zeros
// there seems to be problems.
}
#pragma mark -
#pragma mark UIPickerViewDelegate methods
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [pickerData objectAtIndex:row%[pickerData count]];
}
pickerDataの文字列の数を変更することはできますが、それでも問題はありません。選択された行は、中央に最も近い「最初の」値を選択します。行%[pickerData count]は、pickerDataに3つのNSStringがあると仮定して、次のように返します。
ROW RETURNS 0 0 1 1 2 2 3 0 4 1 5 2 6 0 7 1 8 2 etc...配列の長さの0だけ循環します。 viewDidLoadの混乱しているものは、 selectedItemで指定した配列の項目のインデックスを使用して、できるだけ真ん中に近い値を選択するだけです。パフォーマンスヒットやメモリリークはなく、割り当てられたのは単一の配列だけです。選択した選択肢にアクセスするたびに、([localPicker selectedRowInComponent:0]%[pickerData count])を使用します。あなたが理解できないことや忘れたことがある場合は、コメントしてください。 これが助けてくれることを願っています!
0
私はUIScrollView
に基づいて周期的なテーブルビューを作成しました。そして、このtableViewに基づいて、UIPickerView
を再実装します。これに興味があるかもしれませんDLPickerView
このピッカービューにはUIPickerView
のすべての機能が含まれていますが、多くの新機能も提供されています。カスタムのピッカービューははるかに簡単です。
https://github.com/danleechina/DLPickerView
そしてこのDLPickerView
周期的にスクロールが実際に周期的にスクロールされていることに注意してください。すべての魔法は別のクラスDLTableView
のために起こった。
あなたはそれを円形にしたいですか?私は答えを見つけようとしています、後で私はそれを考え出したかもしれません。 – mk12
http://stackoverflow.com/questions/214441/how-do-you-make-an-uipickerview-component-wrap-aroundを参照してください – squelart