Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在viewcontroller中为子类pickerview实现selectedrow_Ios_Objective C_Uiviewcontroller_Delegates_Uipickerview - Fatal编程技术网

Ios 如何在viewcontroller中为子类pickerview实现selectedrow

Ios 如何在viewcontroller中为子类pickerview实现selectedrow,ios,objective-c,uiviewcontroller,delegates,uipickerview,Ios,Objective C,Uiviewcontroller,Delegates,Uipickerview,我的故事板上有两个UIPickerViews,每个都是子类的,充当自己的数据源和委托。在我的子类中,我定义了行和列的数量,并给出了每个行和列的值/标签 我的主ViewController中有两个插座: @property (weak, nonatomic) IBOutlet PickerView1 *pv1; @property (weak, nonatomic) IBOutlet PickerView2 *pv2; 我想使用委托方法 -(void)pickerView:(UIPickerVi

我的故事板上有两个UIPickerViews,每个都是子类的,充当自己的数据源和委托。在我的子类中,我定义了行和列的数量,并给出了每个行和列的值/标签

我的主ViewController中有两个插座:

@property (weak, nonatomic) IBOutlet PickerView1 *pv1;
@property (weak, nonatomic) IBOutlet PickerView2 *pv2;
我想使用委托方法

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
触发主视图上信息的更新。但问题是主ViewController不是这两个视图的委托(无论如何,不能同时为这两个视图提供委托),并且我看不到与UIPickerView相关的iActions。上面的方法将在我的子类(它自己的委托)中调用,我不知道如何将此操作返回到我的主viewcontroller


所以我的问题是,有没有办法让子类中的“didSelectRow”在我的主ViewController中触发一个操作?

你可以编写一个协议,但在UIKit中有一个协议,它具有你想要的确切方法,在我看来,阻力最小的路径是这样的

  • 将UIPickerViewElegate协议添加到UIViewController
  • 在那里实现didSelectRow

    //

  • 向两个pickerView子类添加第二个委托属性(在标题中,以便UIViewController可以使用setter..)

    @属性(弱、非原子)IBOutlet idDeligate

  • 用IB或代码将viewController连接到两个选择器

  • 把它传下去

    //在pickerView子类中

    -(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row不完整项:(NSInteger)组件{

    [self.deligar pickerView:pickerView-didSelectRow:row-inComponent:component]; }

  •  -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    
        if (pickerView == self.pv1){
    
           //respond to PV1..
    
        }else{
    
           //respond to PV2..
    
        }
        }