Objective c 选择器,访问数据源?

Objective c 选择器,访问数据源?,objective-c,cocoa-touch,Objective C,Cocoa Touch,我正在学习如何设置多选择器,我对下面两个带标签的部分有点好奇: // METHOD_001 NSInteger row_001 = [doublePicker selectedRowInComponent:0]; NSInteger row_002 = [doublePicker selectedRowInComponent:1]; NSString *selected_001 = [pickerData_001 objectAtIndex:row_001]; NSString *se

我正在学习如何设置多选择器,我对下面两个带标签的部分有点好奇:

 // METHOD_001
 NSInteger row_001 = [doublePicker selectedRowInComponent:0];
 NSInteger row_002 = [doublePicker selectedRowInComponent:1];
 NSString *selected_001 = [pickerData_001 objectAtIndex:row_001];
 NSString *selected_002 = [pickerData_002 objectAtIndex:row_002];
编辑_001: 也许我可以简化一下。。。。我知道方法_001在做什么,但是下面的方法呢。如果我把它注释掉,我的代码仍在运行,但是选择器UI没有填充我的数据,因此它显然涉及从数据源获取数据,以便选择器可以显示数据。一个令人费解的方面是,它使用“objectAtIndex:row”来访问一个项,即使整个UI需要填充(即所有行),这是否意味着每行都会调用它,看起来很有趣,它不需要一个NSArray并一次性填充选择器UI

// DELEGATE
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    if(component == kCoffeeIndex) return [pickerData_001 objectAtIndex:row];
    return [pickerData_002 objectAtIndex:row];
}

gary

每当UI认为需要数据时,都会调用委托方法
-pickerView:titleForRow:forComponent:


它不需要数组,因为标题可以动态生成或延迟检索。表视图的情况实际上是一样的。通常只加载可见行,以减少所需的数据。

啊,我明白了,所以当应用程序加载以填充UI时,它会调用每个可见行,这是有意义的。完美的Kenny,我在那里放了一个NSLog,将ObjectsIndex:行打印到控制台,它会按照您所说的做。启动时,它加载可见的选择器字段,然后旋转选择器时,它加载任何可见的新字段。非常感谢,非常感谢。