选择器,访问dataSource?

时间:2010-02-12 18:47:00

标签: 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 *selected_002 = [pickerData_002 objectAtIndex:row_002];

EDIT_001:

也许如果我简化一下......我知道METHOD_001正在做什么,但是下面的方法呢。如果我发表评论我的代码仍然运行但是选择器UI没有填充我的数据,所以它显然涉及从dataSource获取数据,以便选择器可以显示它。一个令人费解的方面是它使用“objectAtIndex:row”来访问一个项目,即使整个UI需要填充(即所有行)这是否意味着每个行调用它,看起来很有趣,它不需要NSArray nd一次性填充了选择器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];
}

加里

1 个答案:

答案 0 :(得分:1)

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

它不需要数组,因为标题可以动态生成或懒惰检索。对于表格视图来说,它实际上是相同的故事。通常只会加载可见行,以减少所需的数据。