UIPickerView - 从代理中获取选择

时间:2012-12-27 23:20:10

标签: objective-c ios cocoa

我正在学习使用UIPickerView对象并以编程方式创建一个。鉴于如果做出选择,它使用委托来调用;将该信息提供给实例化选择器的主视图控制器的标准做法是什么?

我想我将使用一个选择器来允许委托将所选行发送到视图控制器;有更好的方法吗?

任何经常使用这些物品的人的帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

实现委托方法- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component,以便每当选择一行时,它将调用此方法。

您可以这样做:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    NSLog(@"row %d selected in component %d", row, component);
}

答案 1 :(得分:1)

通常,实例化UIViewController的{​​{1}}也将充当其委托(和数据源)。在这种情况下,您可以将视图控制器指定为选择器的委托,例如

UIPickerView

然后,您将在视图控制器中实现方法[myPickerView setDelegate:self]; 。当您将一个对象指定为另一个对象的委托时,您会说“嘿,这个对象知道在发送这些委托消息时该怎么做”。在你的情况下,你说“我的主控制器知道当选择器发送didSelectRow:inComponent:message时该做什么”。

在执行此操作时,您不需要执行任何使用-a-selector-to-allow-the-delegate-to-selected-row-row-to-view-controller废话。这是代表的全部意义! - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component将“委托”工作“委托”给其他对象(您的控制器),该对象知道如何处理选择器所选行中包含的信息。