我有三个不同的搜索页面都在我的搜索视图控制器上运行。每个人都有不同的搜索方法,但屏幕基本相同。选择器中的选择将填充文本字段,lat和long是不断更新并显示在这些字段中的设备。我的问题是,要充分添加正确的数据并遵守UIPickerViewDelegate我是否需要添加三个类来运行这些选择器视图,或者是否允许在SearchViewController类中进行工作以定义PickerView?
答案 0 :(得分:1)
允许(并且可能更好)使SearchViewController成为每个单独的UIPickverView的委托。请记住在SearchViewController的界面上包含<UIPickerViewDelegate>
注释(如@interface SearchViewController : UIViewController <UIPickerViewDelegate>
),如果您缺少任何必需的方法,编译器会帮助您提醒您;但是从6.1开始,UIPickerViewDelegate协议中没有必需的方法。
请注意,UIPickerViewDelegate协议中的每个方法都将UIPickerView作为其第一个参数。检查该参数以查看它是否与您的三个单独的UIPickerView中的每一个相等(并且它当然应该等于其中一个!)并根据需要修改每个视图的委托方法的行为。你最终会得到这样的代码:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if (pickerView == self.myFirstPickerView) {
return self.myFirstSearchMethodResultTitles[row];
} else if (pickerView == self.mySecondPickerView) {
return self.mySecondSearchMethodResultTitles[row];
} else if (pickerView == self.myThirdPickerView) {
return self.myThirdSearchMethodResultTitles[row];
} else {
NSAssert(NO, @"Should not have reached this point!");
return nil;
}
}