我的第一个应用程序在 iphone/ipad 上运行,它使用核心图形和手势识别器(不是 OpenGL 或触摸事件)。应用程序、视图和控制器是使用 IB 设置的。它只是 ViewController 中的一个 View。我添加了 CG 调用以绘制到 CG 上下文中。手势被添加到视图中,但在视图控制器中处理。视图控制器使用访问器来更改决定在视图中绘制什么的变量。计算(即模型)嵌入在视图中。该应用程序运行良好,但我想添加功能,例如通过电子邮件发送和保存已绘制的内容。(我知道我需要其他图形上下文)。
传统智慧告诉我我需要使用 MVC 范式,这意味着将模型从视图中分解为自己的对象。所以,我重新分解了代码。我为模型手动添加了一个 NSObject,它很好地包含了数据和所需的方法。没有编译错误或警告。
现在,当视图的 drawRect 被触发时,我想通过控制器从模型中获取更新的图像。在我希望返回图像的关键位置,NULL 回来了。我可能只是没有正确的对象引用,但是我太困惑了,无法消除迷雾,而且我正在真空中工作,所以我正在寻求您的帮助。谢谢阅读。
总结和问题
视图控制器始终具有可以传递给模型的当前参数。该模型可以在给定这些参数的情况下计算位图图像。我很确定我有那么多。
我的问题是(用各种不同的方式表达):
将图像从模型获取到视图的最佳方法是什么(通过控制器:^)视图应该如何向视图控制器发送消息以发起请求?
模型如何将图像返回给控制器?我假设我只是通过您推荐的任何链将 CGContextRef 传回。
关于我:我是 OOP、Objective-C、Xcode 和 IB 的新手。我多次观看了斯坦福大学的大部分讲座,研究了 Goldstein 的傻瓜书,浏览了 Apple 文档。菜鸟很难从这些来源中收集到适当水平的答案。我只是需要更多的“经验”。我太绿了,我什至不知道如何引用视图控制器,除了在视图的接口定义中包含“myViewController *viewController”!我一直在谷歌上搜索并阅读 Stackoverflow 上类似问题的答案。我不敢相信我没有找到任何合适的东西。我希望有一两个实用的原则可以作为我的指导。
请指教。
这类似于reference-to-model-data-in-a-view-instance-drawrect,没有得到满意的回答。