UIPickerView:有没有办法阻止用户滚动到某一行



我正在寻找一种方法来阻止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];
    }
}

最新更新