在运行时动态地将值添加到UIPickerView

时间:2009-02-25 05:04:23

标签: iphone objective-c cocoa-touch

如何在运行时动态地向UIPickerView添加值。

我正在使用以下代码静态填充UIPickerView。需要补充 在运行时动态地计算值,例如三,四等。

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

    NSString *title = nil;
    if(row==0){
        title = @"One"; 
    }
    if(row==1){
        title = @"Two"; 
    }

2 个答案:

答案 0 :(得分:14)

如果你有一个标题数组,你可以使用类似的东西:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
  return [titles objectAtIndex:row];
}

如果您有[pickerView reloadAllComponents](或reloadComponent:,如果您有多列并且只想刷新其中一列,则会刷新标题。

答案 1 :(得分:1)

嘿我遇到了UIPickerView的问题.....当我调用reloadAllComponents时它没有调用widthForComponent,但它正在调用其他委托方法,例如titleForRow ....我不知道为什么会这样,也许是苹果不希望宽度动态变化?无论如何它在另一个屏幕上,所以我没有动画/无动画问题。我发现通过重置选择器的委托,我可以再次调用widthForComponent!

picker.delegate = view;

其中view实现了UIPickerViewDelegate ....希望这可以帮助那些人!