使用数组值填充UIPickerView

时间:2011-06-06 09:48:39

标签: iphone ipad

我正在开展一个项目,我必须执行以下两项工作: 1.)从 CoreData 中获取值并将其存储在 NSMutableArray 中。 2.)获取 UIPickerView 并用数组值填充它。

问题是数组的大小是动态的,我可以在 UIPickerView 中填充数组值。有人可以帮助我。

2 个答案:

答案 0 :(得分:10)

为了使UIPickerView正常工作,每次重新加载时,必须提供每个组件的组件数量(列)和行数: 如上所述,在填充数组后使用[myPickerView reloadAllComponents];重新加载视图,但是在将包含视图控制器类声明为<UIPickerViewDelegate>后,您必须实现这些内容,将选择器作为委托链接到文件所有者,然后:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
   return 1;// or the number of vertical "columns" the picker will show...
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    if (myLoadedArray!=nil) {
        return [myLoadedArray count];//this will tell the picker how many rows it has - in this case, the size of your loaded array...
    }
    return 0;
}

 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
//you can also write code here to descide what data to return depending on the component ("column")
        if (myLoadedArray!=nil) {
            return [myLoadedArray objectAtIndex:row];//assuming the array contains strings..
        }
        return @"";//or nil, depending how protective you are
    }

答案 1 :(得分:1)

更新数组中的值(插入或修改现有)后。

reloadAllComponents个实例上致电UIPickerView

- (void)reloadAllComponents

使用如下

[myPickerView  reloadAllComponents];