2013-12-20 77 views
1

我正在尋找一種方法來阻止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. 
    } 
} 

如果您有任何問題,請讓我知道。我很感激我得到的任何幫助或提示。

回答

0

試試這個:

-(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]; 
    } 
} 
+0

這不會阻止用戶向下滾動 - 當紡紗停止時,它將使其跳回第2行。 – rdelmar

0

創建一個屬性來跟蹤用戶是否選擇行3(具有指數爲2)讓我們把它叫做row3Selected這個例子。

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個對象。

相關問題