无法在选择器视图中滚动选择默认值

Posted

技术标签:

【中文标题】无法在选择器视图中滚动选择默认值【英文标题】:unable to pick default value with out scrolling in picker view 【发布时间】:2015-12-08 12:17:05 【问题描述】:

我的应用程序中有选择器视图,它工作正常,但如果我想先选择那些在选择器视图中的值,问题就出现了。如果不滚动选择器视图,我无法选择。首先我向上或向下滚动并之后我可以选择这些值。不选择不滚动。 无法在不滚动选取器视图的情况下获取值(当用户不与选取器视图交互时,我想获取在选取器视图中默认选择的值)。

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

    return 1;

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component


    return [ ArrayForIdealCalc count];


#pragma data source
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

    return [ArrayForIdealCalc objectAtIndex:row];
    // return [arrayname objectAtIndex:row];
    //  return [Selected_Centers objectAtIndex:row];


-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component


    if ([callCalculate isEqualToString:@"WEIGHTMEASURE"])
    
        IdealWeightstr =[ArrayForIdealCalc objectAtIndex:row];
        _KiloLbl.text=IdealWeightstr;
        [_pickDataForIdealWeight setHidden:YES];
        [self.pickDataForIdealWeight reloadAllComponents];

    

这是我的可编辑代码

【问题讨论】:

你能发布你的代码吗?谢谢。 @harsh 把你的一些代码放在这里。 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component if ([callCalculate isEqualToString:@"WEIGHTMEASURE"]) IdealWeightstr =[ArrayForIdealCalc objectAtIndex :排]; _KiloLbl.text=理想体重; [_pickDataForIdealWeight setHidden:YES]; [self.pickDataForIdealWeight reloadAllComponents]; @harshchauhan:您可以选择第一个值作为默认值。现在,当您滚动时,更改值。如果它没有滚动,那么您可以使用默认值,即纠察队的第一个值。可能会解决你的问题。 @harshchauhan:我知道你的问题是什么。 pickerView:didSelectRow:inComponent: 在滚动选择器视图之前永远不会被调用。因此,不设置第一个值。解决方案就是我上面提到的那个。只需选择第一个作为默认值并在选择器滚动时更改它。这肯定会解决你的问题。 【参考方案1】:

你可以使用

selectRow:0 inComponent:0 animated:NO

或者你可以调用picker委托方法

pickerView:myPickerView didSelectRow:0 inComponent:0

【讨论】:

【参考方案2】:

如果要选择默认值。找到行并使用UIPickerView这个方法。

– selectRow:inComponent:animated:.

Reference

【讨论】:

【参考方案3】:

您可以通过将点击手势添加到您的选择器视图来让用户点击/单击一行选择器视图。这是相同的代码。

[self.pickerview selectRow:0 inComponent:0 animated:YES];
UITapGestureRecognizer *tapToSelect = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(pickerTapped:)];
tapToSelect.delegate = self;
[self.pickerview addGestureRecognizer:tapToSelect];  

然后添加以下方法:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

  return true;



-(void)pickerTapped:(UIGestureRecognizer *)gestureRecognizer
 
    if ([self.pickerview selectedRowInComponent:0] == 0)
    
      _Kilolbl.text = selectedRowValue;
    
   

这样,您可以将 Picker 视图中默认选定行的值填充到您希望的 UIControl。例如,如果您的默认选定行是 10,那么您应该在 pickerTapped 方法中使用 10 进行比较。 不要忘记将 UIGestureRecognizerDelegate 添加到您的视图控制器。

【讨论】:

您是否正确设置了所有委托方法。你还能确定你的 pickerTapped 方法是否被调用? 我仍然无法尝试第一个值。没有滚动 :-当我点击时我仍然无法尝试第一个值。 :我正在向您发送完整的 .m 文件。如果您将您的邮件 ID 发送给我。 我读过的所有内容都说 UIPickerView 在 ios 8 之后将无法与 UIGestureRecognizer 一起使用。它对我不起作用。

以上是关于无法在选择器视图中滚动选择默认值的主要内容,如果未能解决你的问题,请参考以下文章

当带有 extract() 的 Scrapy 选择器返回 None 时如何设置默认值?

Xamarin 选择器,未设置默认值

在 SwiftUI Picker 中为 NSManagedObject 设置默认值?

小程序uni-app中uview中select选择器第二次无法选中设置的默认值

引导日期选择器未在 editorFor 中显示模型值

如何从图像文字数组中选择单个图像并将其保存为swift 5中的用户默认值