uiview getter nil

时间:2010-01-24 15:45:27

标签: iphone uiview uiviewcontroller drawrect getter

我试图从我的视图控制器到我的视图(子视图)获取某些iVars,因此drawrect将根据用户输入绘制一个形状。当我将这些变量硬编码到子视图中时,形状绘制完美,但是当我使用getters从视图控制器访问自定义变量时,它们会返回nil并且绘图混乱。我没有错误或警告。我知道吸气器有问题,有什么建议吗?任何人都有一个将变量传递给子视图的例子,所以cgcontext可以在drawrect中使用吗?我很困难。我认为在这一点上我的问题很简单,我遗漏了一些基本的东西。我以为我已经把二传手/吸气剂打包了。

3 个答案:

答案 0 :(得分:0)

确保你从''获得的任何东西(即父母,或者视图,或者你正在访问的任何东西)都不是零。尝试在访问它们之前设置断点,并验证目标是否有效,并拥有有效数据。

答案 1 :(得分:0)

我们真的需要看到更多代码。 Ben说,在你看来的某个地方,你必须设置parent = (some code to get a reference to my parent)。确保这确实有效,即你确实有一个对你父母的引用。即使ivars是正确的,如果你的父亲是nil,那么在大多数情况下发送[nil getSomeiVar]将返回0。

如果没有更好地理解代码,这是我的猜测。在你的UIViewController的某个地方,你应该有类似的东西:

myView = //make your view
[myView setParent:self]

Parent是视图的变量,带有属性以便您可以访问它

编辑: 如果我们知道你在做什么,为什么重要?

要使setParent起作用,您需要执行以下操作:

  1. 您视图中的ivar YourUIViewControllerSubclass *parent; .h
  2. 您视图中的这个ivar @property (nonatomic, retain) YourUIViewControllerSubclass *parent;的属性.h
  3. @synthesize parent;
  4. 中您视图的.m中对此ivar @implementation的合成

答案 2 :(得分:0)

是的,你们两个都错了,但是我从你们那里得到了很多帮助。毕竟我没有发布代码。我不得不把握我的调试技巧。另一篇帖子中有人提到违反MVC的行为。我必须将uiview中的ivars设置为视图CONTROLLER中的自定义值。换句话说,我必须从控制器设置而不是从子视图中获取。