1

我的应用程序中三个从 SearchViewController 类运行的搜索页面之一

我有三个不同的搜索页面都在我的搜索视图控制器上运行。每个都有不同的搜索方法,但屏幕基本相同。选择器中的选择将填充文本字段,而 lat 和 long 是设备的,它会不断更新并显示在这些字段中。我的问题是,为了充分添加正确的数据并遵守 UIPickerViewDelegate,我是否需要再添加三个类来运行这些选择器视图,或者是否允许在 SearchViewController 类中进行工作以定义 PickerView?

4

1 回答 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 回答