繁体   English   中英

UIPicker selectRow

[英]UIPicker selectRow

我试图选择第一行作为默认值。

-(void)pickerViewLoaded{

   [pickerView setShowSelectionIndicator:YES];
   pickerView.delegate = self;
   [pickerView reloadAllComponents];
   [pickerView selectRow:1 inComponent:0 animated:YES]
}

当我在调用didSelectRow方法的viewDidLoad()上调用此方法时,它工作正常,但它正在选择该组件的第二行而不是第一行。 当我使用[pickerView selectRow:0 inComponent:0 animation:YES]进行调用时,则永远不会调用didSelectRow方法。

另一个问题是,当我在选择分段控件时调用pickerViewLoaded方法时,它没有调用didSelectRow方法。 我仍然不知道何时可以使用viewDidLoad调用,为什么不使用segmentedControl。

谢谢大家

无论如何,我似乎都想分享自己的经验,这似乎是一个老话题。

我遇到了同样的问题,并将

[pickerView selectRow:0 inComponent:0 animated:YES];

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;

我仅在使用通知返回调用了最后一行的titleForRow之后,才调用selectRow:inComponent:animated

现在问题已经死了……

我认为selectRow使用从0开始的索引-而不是1。所以0是第一行,1是第二行。

我只是遇到了同样的问题,并弄清楚了:如果所选行没有更改,则不会调用该委托。 另外,默认情况下会选择第0行,因此在viewDidLoad中重新选择第0行不会触发委托。 就我而言,我能够直接调用委托方法,也许这也是您的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM