无法在选择器视图中滚动选择默认值
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 时如何设置默认值?
在 SwiftUI Picker 中为 NSManagedObject 设置默认值?