如何在UIPickerView中查看视图中的行

时间:2013-01-14 21:11:29

标签: ios uipickerview

UIPickerView类有一个方法selectedRowInComponent,它返回组件的选定行。这可能是也可能不是选择器视图中心的项目。我想要的是能够告诉当前正在显示(未选择)的pickerView数据的索引。

为了说明差异,如果您点击UIPickerView拨号中的值,该值的行似乎始终在selectedRowInComponent中返回。但是,如果用户通过多个值滚动选择器然后抬起手指,则selectedRowInComponent不会更新,或者更新为刚刚滚动的值。

无论如何确定实际拨打选择器组件的位置?

该值始终在方法pickerView:didSelectRow:inComponent:中可用,但我想在方法pickerView:titleForRow:forComponent:中查询

为什么呢?因为在滚动UIPickerView时selectedRowInComponent没有被调用。如果由于某种原因我到达数据的末尾并需要添加更多数据,我需要在被调用的方法中执行此操作。这似乎是pickerView:titleForRow:forComponent:,每行都会调用它。

1 个答案:

答案 0 :(得分:0)

我知道这个问题有点陈旧,但回答它我可以帮助别人。

我想我找到了解决这个问题的方法。

解决方案

- (NSString *)pickerView:(UIPickerView *)pickerView
         titleForRow:(NSInteger)row
        forComponent:(NSInteger)component
{
    // Passing the row being viewed to a function that does something with it.
    [self handleRowBeingViewed:[pickerView selectedRowInComponent:component]];
}

- (void)pickerView:(UIPickerView *)pickerView
      didSelectRow:(NSInteger)row
       inComponent:(NSInteger)component
{
    // Passing the row being viewed to a function that does something with it.
    [self handleRowBeingViewed:[pickerView selectedRowInComponent:component]];
}

/**
 * It receives, in input 'rowBeingViewed', the row being viewed by the user in the center of the picker view, and use it to XYZW... 
 *
 *
 * @param rowBeingViewed     Row currently being viewed by the user in the center of the picker view.
 * @return
 */
- (void) handleRowBeingViewed:(NSInteger)rowBeingViewed
{
     // Printing for debugging.
     NSLog(@"String Being Viewed: %@", pickerViewArray[rowBeingViewed]);

     // DO YOUR STUFF HERE
     // ...
}

说明

使用 selectedRowInComponent UIPickerView 可以随时知道选择哪一行(或在中心查看,我认为是相同的) EM>

如果您在委托方法 pickerView:titleForRow:forComponent 中使用该方法 selectedRowInComponent ,每当新标题被打印时,您就可以知道正在中心查看哪一行"打印"在选择器视图中的用户。

有时,如果在Picker View中只滚动1或2行,则代理的方法 pickerView:titleForRow:forComponent 不会被调用而你不知道在中心正在查看哪一行。要解决这个问题,请在委托方法 pickerView:didSelectRow:inComponent: selectedRowInComponent 强>

希望这有助于某人。