我正在学习 UIPickerView 对象的使用并以编程方式创建一个。鉴于如果进行了选择,它会使用委托进行调用;将该信息获取到实例化选择器的主视图控制器的标准做法是什么?
我在想我将使用选择器来允许委托将选定的行发送到视图控制器;有没有更好的办法?
经常使用这些对象的人的任何帮助将不胜感激。
我正在学习 UIPickerView 对象的使用并以编程方式创建一个。鉴于如果进行了选择,它会使用委托进行调用;将该信息获取到实例化选择器的主视图控制器的标准做法是什么?
我在想我将使用选择器来允许委托将选定的行发送到视图控制器;有没有更好的办法?
经常使用这些对象的人的任何帮助将不胜感激。
实现委托方法- (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);
}
通常,您UIViewController
实例化的UIPickerView
也将充当其委托(和数据源)。在这种情况下,您可以将视图控制器分配为选取器的委托,例如
[myPickerView setDelegate:self];
然后,您将- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
在视图控制器中实现该方法。当您将一个对象指定为另一个对象的委托时,您是在说“嘿,这个对象知道当它收到这些委托消息时该做什么”。就您而言,您是在说:“我的主要控制器知道Picker发送DidSelectrow:Incomponent:Message时该怎么办”。
在这样做时,您不需要做任何使用选择器来允许委托发送选择的行到视图控制器的废话。这就是代表的全部意义所在!UIPickerView
是将工作“委托”给其他对象(您的控制器),该对象知道如何处理选择器选定行中包含的信息。