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中有3个NSString,行%[pickerData count]返回以下内容:
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。并基于这个tableView,我重新实现了UIPickerView
。您可能对此DLPickerView
感兴趣。这个选择器视图具有UIPickerView
所具有的所有功能,但也提供了许多新功能,并且定制此选取器视图更容易。
https://github.com/danleechina/DLPickerView
并且要注意的是这DLPickerView
循环滚动真是循环滚动。所有的魔法都是因为另一个课程DLTableView
而发生的。
相关问题
- 1. Teradata第一个值和最后一个值
- 2. 群组的最后和第一个值
- 3. 当我有一个mysqli_multi_query后面跟着一个mysqli_query,第二个查询失败
- 4. Php - 返回一个值的Foreach,第一个或最后一个
- 5. 获得第一和最后一个值组 - 与dplyr GROUP_BY最后的()和第()
- 6. DAX - 最后一个值
- 7. 如何打印第一个和最后一个值?
- 8. 使pyplot.hist()第一个和最后一个bin包含异常值
- 9. D3折线图显示第一个和最后一个点值
- 10. 在HighChart上检索第一个和最后一个值
- 11. 更改PHP行的第一个和最后一个值
- 12. 找到序列中的第一个和最后一个值r
- 13. 交换数组中的第一个和最后一个值(JAVA)
- 14. JS选择值和最后一个值
- 15. 移动后跟着一个QWidget
- 16. 从POST数组到另一个页面的最后一个值
- 17. 为每个组选择第一个,最大和最后一个非空值
- 18. jQuery:如何获得输入文本的第一个值和最后一个值
- 19. “换行”到达上一个值后的第一个值
- 20. 第一个最后一个元素
- 21. 第一个和最后ROW_NUMBER
- 22. 获取最后一行的第一个单元格的值
- 23. Array中的错误:第一行的最后一个值为'true'
- 24. 在值后面加逗号但不为最后一个
- 25. 我将最后一个值作为最大值和最小值
- 26. 获得最后一列最后一个单元格的值
- 27. 如何使用xpath获取第二个最后一个值?
- 28. SQL:LIKE在哪里条件指定一个字母后跟一个数字后面跟着其他什么?
- 29. 在最后一个分号后面出现一个空声明,如果该分号后跟一个右括号?
- 30. 防止前导零,除非后面跟着一个点?
你想使它成为循环?我试图找到答案,稍后再回来查看,也许我会弄清楚。 – mk12 2009-08-18 03:23:42
查看http://stackoverflow.com/questions/214441/how-do-you-make-an-uipickerview-component-wrap-around – squelart 2009-08-18 03:50:33