【问题标题】:Passing Managed Object Data Through didSelectRow UIPickerView通过 didSelectRow UIPickerView 传递托管对象数据
【发布时间】:2011-07-01 05:03:27
【问题描述】:

我对如何通过 didSelectRow UIPickerView 操作传递获取的托管对象数据有点迷茫。

在之前的视图中,我是这样传递 CalcInfo 对象的:

CalcInfo *calc = (CalcInfo *)[_calcInfos objectAtIndex:indexPath.row];
self.myPageOneViewController.calcInfos = calc;

我成功地将 calcInfos.attribute 用于我的所有 IBAction:(id)sender 按钮,但 pickerView 无法获取/使用数据。 updateLabel 操作始终将 calcInfos.attribute 设为 NULL。这是我的一些代码

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
[self updateLabel];

}

- (void)updateLabel {

double stdrate = [calcInfos.infusionstd doubleValue];
double lowrate = [calcInfos.infusionlow doubleValue];

if (calcInfos.infusionlow == NULL) {
    NSLog(@"It's null");
}

}

非常感谢您的帮助!

【问题讨论】:

  • 我找到了解决方案!我有这种直觉,我的 xib 文件中的数据引用有问题。最初,我让委托和数据源引用了我的 PageOneViewController,但我尝试引用文件的所有者,并且它有效!我所有的按钮都可以用来检索我的 calcInfos 变量,这真的很奇怪,但是 pickerView 却无法...

标签: core-data uipickerview nsmanagedobject nsmanagedobjectcontext


【解决方案1】:

选择器视图是一个带有自己的硬连线控制器的子视图。它返回在其委托消息 `didSelectRow:inComponent' 中选择的行和列/组件。

您需要将该信息传递给您的updateLabel 方法,以便您可以将pickerview 选择与您的托管对象相关联。现在,该方法根本不执行任何操作。

【讨论】:

  • 感谢您的回复!我想你把我带到了正确的地方。但是,我不确定如何将 calcInfos 对象传递给我的 updateLabel 方法。
  • 如果我理解正确,您是说 pickerView 在它自己的子视图中,所以 didSelectRow:inComponent 消息和 updateLabel 方法没有与主视图连接?这就是为什么我不能从子视图中调用我的托管对象属性的原因?当我从 UIButton IBAction 调用方法时,我的 updateLabel 方法可以调用属性。奇怪的是,我必须将托管对象信息发送到 pickerView 子视图中才能让 updateLabel 方法“看到”它。
  • pickerview 不与控制器共享任何数据。它只是返回到它的委托(可能是也可能不是控制器)。所以,如果你想从pickerview 中提供数据,你必须明确地这样做。您的 updateLabel 方法不知道选择器视图选择是什么,除非您将值显式传递给它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多