【发布时间】:2010-10-20 13:14:33
【问题描述】:
我想使用同一个 viewController 在同一个视图中创建 2 个单独的选择器。 但是如何为它们设置单独的委托和数据源?
似乎无法正常工作。它们显示相同的数据。如果您对此有任何示例代码,将不胜感激。
谢谢。
【问题讨论】:
标签: iphone objective-c oop
我想使用同一个 viewController 在同一个视图中创建 2 个单独的选择器。 但是如何为它们设置单独的委托和数据源?
似乎无法正常工作。它们显示相同的数据。如果您对此有任何示例代码,将不胜感激。
谢谢。
【问题讨论】:
标签: iphone objective-c oop
请注意,数据源和委托协议的每个方法都包含一个UIPickerView * 参数,例如:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
你需要用它来区分你的两个实例,如下:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
if([pickerView isEqual: pickerOne]){
// return the appropriate number of components, for instance
return 3;
}
if([pickerView isEqual: pickerTwo]){
// return the appropriate number of components, for instance
return 4;
}
}
【讨论】:
最直接的方法是使用pickerView 的tag 属性。我通常在标题中定义这些以提高可读性。您可以在 Interface Builder 或代码中设置标签。
#define kPickerOne 0
#define kPickerTwo 1
然后在你的实现文件中...
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
if(pickerView.tag == kPickerOne)
{
// do something with picker one
}
else if(pickerView.tag == kPickerTwo)
{
// the other picker
}
}
【讨论】: