我正在学习如何设置一个多选取器,我对下面两个标记的部分有点好奇:
// 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并一次性填充选取器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];
}加里
发布于 2010-02-13 05:43:13
每当UI认为需要数据时,都会调用委托方法-pickerView:titleForRow:forComponent:。
它不需要数组,因为标题可能是动态生成的,也可能是延迟检索的。实际上,表视图也是如此。通常只加载可见的行,以减少所需的数据。
https://stackoverflow.com/questions/2254274
复制相似问题