我有一个包含7个项目的UIPicker。 (只有一个组件)...如果我点击选择器中的第一个项目(没有任何选择器的滚动),我得到的文本结果为空。
但是,如果我在列表中向下“拖拽”并且那么点击项目#1就可以正常工作。
如果我点击任何其他项目,它总会返回正确的结果。当然,列表必须滚动才能选择这些项目。
导致这种情况的原因是什么?我需要调用一个委托函数吗?有没有办法将选择默认为列表中的第一项,如果它们从不点击任何内容?
谢谢,
菲尔
以下是我的.m
中“viewdidload”的摘录 - (void)viewDidLoad {
[super viewDidLoad];
NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__);
listOfTerms=[[NSArray alloc]initWithObjects:
@"Fall Semester",@"Spring Semester",@"Summer Session",@"Q1",@"Q2",@"Q3",@"Q4",nil];
...
...
以下是我定义的其他4个UIPickerView委托函数。
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
return [listOfTerms count];
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [listOfTerms objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component {
selectedTerm =[[NSString alloc]
initWithFormat:@"%@",
[listOfTerms objectAtIndex:row]];
}
答案 0 :(得分:5)
pickerView:didSelectRow:inComponent:
。因此,如果您从不滚动视图,则永远不会调用该方法,因此永远不会设置selectedTerm。修复很简单,在viewDidLoad:
初始化selectedTerm。
答案 1 :(得分:1)
对于所有情况,最简单的答案是暗示 viewDidAppear
中的didSelectRow(请注意,它不是 viewDidLoad 方法)
- (void) viewDidAppear:(BOOL)animated{
[self pickerView:[self yourpickerview] didSelectRow:0 inComponent:0;
}