对于单个视图中的两个选择器,titleForRow始终使用组件值0进行调用

时间:2012-08-03 09:58:00

标签: iphone ios5 uipickerview picker

我在单个视图控制器中有两个采摘器。他们使用两个NSArray作为他们的数据。

问题在于,对于两个选择器,当调用titleForRow方法时,组件参数的值始终为零,因此所有行都显示其数据数组中的第一个字符串。

为什么会发生这种情况,我该如何解决?

这些是我的委托方法:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    NSLog(@"%d",[pickerView tag]);
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:    (NSInteger)component
{
    NSLog(@"%d",[pickerView tag]);
    if ([pickerView tag] == 0)
        return providersList.count;
    else
        return amountList.count;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    NSLog(@"%d, %d",[pickerView tag],component);
    if ([pickerView tag] == 0)
        return [providersList objectAtIndex:component];
    else
        if ([pickerView tag] == 1)
            return [amountList objectAtIndex:component];
        else
            return nil;
}

使用xcode 4.3和iOS5。

1 个答案:

答案 0 :(得分:0)

组件用于拾取器中的多个节,行用于组件中的特定行。当您的选择器有多个部分时,您将收到组件的不同值。行指示组件中的行。

因此,如果您只有一个组件,那么您应该使用row。

[amountList objectAtIndex:row];