我正在寻找一种方法来阻止UIPickerView
在到达某一行后进一步向下滚动。它仍然可以向上滚动,但不能向下滚动。我想在单击第三行时执行此操作。这是代码:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSLog(@"You selected this: %@", [dataArray objectAtIndex: row]);
selected= row;
NSLog(@"selected %i",selected);
self.textField.text = [dataArray objectAtIndex: row];
if (row = 3){
// stop scrolling any lower.
}
}
如果您有任何问题,请告诉我。我很感激我得到的任何帮助或提示。
创建一个属性以跟踪用户是否选择了第 3 行(索引为 2 的行) 让我们称之为 row3对于此示例已选择。
if (row == 2){
self.row3Selected = YES;
[self.pickerView reloadAllComponents];
}
修改您的 numberOfRowsInComponent: 方法,使其如下所示:
- (NSInteger)numberOfRowsInComponent:(NSInteger)component {
if (self.row3Selected) {
return 3;
}else{
return myArray.count // myArray is the array used to populate the picker with data
}
}
这将导致选取器仅显示数据源中的前 3 个对象。
试试这个:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSLog(@"You selected this: %@", [dataArray objectAtIndex: row]);
selected= row;
NSLog(@"selected %i",selected);
self.textField.text = [dataArray objectAtIndex: row];
if (row > 2){
[pickerView selectRow:2 inComponent:component animated:YES];
}
}