0

我在单个视图控制器中有两个选择器。他们使用两个 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。

4

1 回答 1

0

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

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

[amountList objectAtIndex:row];
于 2012-08-03T10:09:05.457 回答