我找到的每个示例都向我展示了如何在viewDidLoad
中填充UIPickerView
。但是,当我尝试在另一个函数中使用来自HTTP请求的项填充选择器时,它最终是空白的(即使我已经测试过数据实际上确实返回了我想要的数据)。
- (IBAction)btnClick:(id)sender
{
NSDictionary *courseNames;
if(![_txtBox.text isEqual:@""]) //if not empty
{
courseNames = [self retrieveCourseNamesForSemester:_txtBox.text];
for (NSString *key in courseNames)
{
NSString *val = [NSString stringWithFormat:@"%@ - %@",key,[courseNames objectForKey:key]];
_txtView.text = val;
[courseArray addObject:val];
}
}
_coursePicker.hidden=false;
[_txtBox resignFirstResponder];
}
_coursePicker
是在故事板本身上创建的,所以它不是通过编程或其他方式添加的。我正在添加数组courseArray
,它在UIPickerView
方法中分配,如下所示:
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//set number of rows
return courseArray.count;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [courseArray objectAtIndex:row];
}
我如何重新填充UIPickerView
在这一点上?
获取数据后,_coursePicker.hidden = NO;
之前尝试调用
[_coursePicker reloadAllComponents];
这将使选择器重新填充您的数据。