0

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

4

3 回答 3

0

确保您从“来自”的任何东西(即父级或视图,或您正在访问 getter 的任何东西)都不是零。尝试在访问它们之前设置一个断点并验证您的目标是否有效,并且具有有效的数据。

于 2010-01-24T15:55:01.850 回答
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. YourUIViewControllerSubclass *parent;您视图的 .h 中的 ivar
  2. @property (nonatomic, retain) YourUIViewControllerSubclass *parent;您视图的 .h中此 ivar 的属性
  3. @synthesize parent;在您视图的 .m中对此 ivar 的综合@implementation
于 2010-01-24T18:28:59.923 回答
0

是的,你们都错了,但我从你们帮助我那里拿走了很多东西。毕竟我不必发布代码。我不得不在很大程度上提高我的调试技能。另一个帖子中有人提到了违反 MVC。我必须将 uiview 中的 ivars 设置为来自视图控制器的自定义值。换句话说,我必须从控制器中设置而不是从子视图中获取。

于 2010-01-25T00:25:49.803 回答