[英]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.