Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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 可以填充选择器视图,但不能从中获取数据_Ios_Objective C_Uipickerview - Fatal编程技术网

Ios 可以填充选择器视图,但不能从中获取数据

Ios 可以填充选择器视图,但不能从中获取数据,ios,objective-c,uipickerview,Ios,Objective C,Uipickerview,我在一个视图/视图控制器中有三个不同的UIPickerViews。我没有将viewController作为所有三个UIPickerViews的委托和数据源,而是为每个UIPickerViews创建了单独的子类文件,并将这些文件导入viewController。我为ViewController中的每个UIPickerViews创建了插座(从情节提要中单击并拖动)。因此,在viewController的viewDidLoad中,我将插座连接到数据源/代理。下面是一个示例,其中包含self.timeP

我在一个视图/视图控制器中有三个不同的UIPickerViews。我没有将viewController作为所有三个UIPickerViews的委托和数据源,而是为每个UIPickerViews创建了单独的子类文件,并将这些文件导入viewController。我为ViewController中的每个UIPickerViews创建了插座(从情节提要中单击并拖动)。因此,在viewController的viewDidLoad中,我将插座连接到数据源/代理。下面是一个示例,其中包含self.timePicker的出口

self.timePicker.delegate = [self timePickerDataDelegate];
self.timePicker.dataSource = [self timePickerDataDelegate];
其中
[self timePickerDataDelegate]
调用构造函数

-(TimePicker *)timePickerDataDelegate
{

    if (!_timePickerDataDelegate) _timePickerDataDelegate = [[TimePicker alloc] init];
    return _timePickerDataDelegate;
}
在timePicker类中,我实现了它作为委托和数据源所需的方法。事实上,当我运行应用程序时,所有三个UIPickerViews都填充了正确的数据。但是,我在从picker视图获取数据时遇到问题。由于我的UIPickerViews处于模式视图中,因此我尝试在
prepareforsgue
中获取数据,当模式被取消时,将调用该数据。但是,当我这样做以获得所选的时间值时,我会得到错误

  No visible interface for UIPickerView declares the selector pickerView:titleForRow:forComponent

 NSString *time = [self.timePicker pickerView:self.timePicker titleForRow:[self.timePicker selectedRowInComponent:0] forComponent:0];

你能解释一下我做错了什么吗?

方法
pickerView:titleForRow:forComponent:
UIPickerViewDelegate
的方法,而不是
UIPickerView

该行:

NSString *time = [self.timePicker pickerView:self.timePicker titleForRow:[self.timePicker selectedRowInComponent:0] forComponent:0];
应该是:

NSString *time = [self.timePickerDataDelegate pickerView:self.timePicker titleForRow:[self.timePicker selectedRowInComponent:0] forComponent:0];
或:


问题是方法中的第一个元素实际上应该是委托

self.timePickerDataDelegate
而其他元素则是出口

self.timePicker
这是全部的

   NSString *time = [self.timePickerDataDelegate pickerView:self.timePicker titleForRow:`[self.timePicker selectedRowInComponent:0] forComponent:0];`
   NSString *time = [self.timePickerDataDelegate pickerView:self.timePicker titleForRow:`[self.timePicker selectedRowInComponent:0] forComponent:0];`