gpt4 book ai didi

ios - 可以填充选择器 View 但不能从中获取数据

转载 作者:行者123 更新时间:2023-11-29 03:00:46 24 4
gpt4 key购买 nike

我在一个 View / View Controller 中有三个不同的 UIPickerView。我没有让 viewController 成为所有三个 UIPickerView 的委托(delegate)和数据源,而是为每个 UIPickerView 创建了单独的子类文件,并将这些文件导入到 viewController 中。我为 ViewController 中的每个 UIPickerView 创建了导出(从 Storyboard 中单击并拖动)。因此,在 viewController 的 viewDidLoad 中,我将导出连接到数据源/委托(delegate)。这是一个 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 类中,我实现了它作为委托(delegate)和数据源所需的方法。事实上,当我运行应用程序时,所有三个 UIPickerViews 都填充了正确的数据。但是,我在从选择器 View 中获取数据时遇到问题。由于我的 UIPickerViews 处于模态视图中,我尝试在 prepareForSegue 中获取数据,当模态被关闭时它会被调用。但是,当我这样做以选择时间值时,出现错误

  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];

或:

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

关于ios - 可以填充选择器 View 但不能从中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23326153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com