我有三个不同的搜索页面都在我的搜索视图控制器上运行。每个都有不同的搜索方法,但屏幕基本相同。选择器中的选择将填充文本字段,而 lat 和 long 是设备的,它会不断更新并显示在这些字段中。我的问题是,为了充分添加正确的数据并遵守 UIPickerViewDelegate,我是否需要再添加三个类来运行这些选择器视图,或者是否允许在 SearchViewController 类中进行工作以定义 PickerView?
问问题
61 次
1 回答
1
让 SearchViewController 成为每个单独的 UIPickverView 的代表是允许的(并且可能更可取)。请记住<UIPickerViewDelegate>
在 SearchViewController 的界面上包含注释(如@interface SearchViewController : UIViewController <UIPickerViewDelegate>
),如果您缺少任何必需的方法,编译器会提醒您;但是从 6.1 开始,UIPickerViewDelegate 协议中没有必需的方法。
请注意,UIPickerViewDelegate 协议中的每个方法都将 UIPickerView 作为其第一个参数。检查该参数以查看它是否等于您的三个单独的 UIPickerViews 中的每一个(它当然应该等于其中一个!)并根据需要为每个视图修改委托方法的行为。你最终会得到这样的代码:
- (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;
}
}
于 2013-03-19T16:41:19.567 回答