关于建立客观c计划的建议 - 基本原则

时间:2010-07-06 16:57:40

标签: objective-c

我一直在通过书籍和教程学习Objective-C,虽然我学到了很多东西并且可以做我想要的很多东西,但我仍然很难让我的程序的基本结构正确。这是我想做的具体事情,但我最终迷失了方向。

我想生成一个卡片对象(我认为)应该是UIView的子类。我希望能够制作一张新卡,设置它的帧大小并在其中放置一些子视图。我也希望能够改变大小并移动。

我可以让UIView做一些这样的事情并使用一个块来制作动画,但我对于放置代码片段的位置感到困惑。我从一个基于视图的模板开始,并创建一个新的UIView子类。我想让视图控制器询问卡片并能够接受用户输入来操作卡片。我可以制作按钮并将它们连接到IBActions,但是我应该在卡对象或视图控制器中放置更改大小和移动方法吗?我希望能够说出这样的话:声明一张新卡 - 当按下按钮等时,告诉卡“移动到这里”等。

我知道这可能听起来像是一个非常通用的问题,而且我不是在寻找有人为我编写代码,但我只是喜欢一些普通(或特定的!)建议。

2 个答案:

答案 0 :(得分:2)

一般来说,您的软件应遵循model-view-controller pattern

翻译,这可能意味着应该在视图中存储视图的。即卡片面部图片,卡片价值等

所有必须处理关于卡的逻辑,它在哪里,发生什么等等都应放在控制器中。

最后,在分类,改组,交易等方面,包含卡片和附加逻辑的“Deck”类应该在模型中单独处理。

理想情况下,这就是程序流程的工作原理:

  1. 用户按下查看按钮
  2. 视图已连接到控制器中的方法
  3. Controller评估程序的状态,并调用模型中的方法(如交易)
  4. 模型执行一些逻辑并返回信息
  5. Controller评估模型的返回值,并更新视图
  6. 视图根据控制器的新更新
  7. 重绘自身

    这是一个非常基本的解释,但希望能够让你远离麻烦。我强烈建议您阅读Apple's MVC documentation.

答案 1 :(得分:0)

谢谢你的建议,斯蒂芬。我一直在阅读MVC文档并试图吸收它,但它已经很多了!

到目前为止,让我解释一下我的应用程序的各个部分,看看你是否觉得我让他们做正确的事情......

我创建了一个基于视图的应用程序,从名为FlashCard开始,所以我得到了一个免费的viewConroller(对象?)和一个.xib。据我所知,这封装了我的视图和我的控制器。所以这是我的结构,我想:

电脑板   - FlashCardViewController      我的.xib文件中的按钮有动作方法

查看   - .xib      有按钮为每个基本数学运算符请求新的卡片组,以及从当前卡片中获取新卡片,以及用于显示我的闪卡信息的字段(操作数,操作员,结果)

模型   - 卡      UIView的子类。它具有操作数等属性,以及它从UIView继承的东西。   - 甲板      NSObject的子类。这有一个名为cards的属性,它是一个NSMutableArray。它有一种方法,用于根据来自按钮标题的运算符生成具有所有可能操作数值的卡片组。如果你点击+按钮,它会制作一副+闪存卡。它还有一种从牌组中选择一张牌的方法 - 你将牌组传递给它,然后它返回一张随机的Card牌对象并将牌从牌组中移除。

一切正常 - 我可以生成新套牌并获得一张卡片。然后我让Card的initWithFrame方法定义了一个框架,当我从控制器的当前套牌中获得一张新卡时,我将卡的视图添加到控制器的视图中。它很好。

我现在的问题是 - 如果我想让卡片移动到视图中的其他位置,那么该方法应该在控制器中吗?还是甲板?还是卡?我在正确的地方有零件吗?当我通过IBAction方法在控制器中生成一个新的Card对象(通过从卡座中选择它)时,我是否可以在控制器中以另一种方法访问该卡 - 它是否可用?例如,如果我制作另一个按钮,将卡片移动到屏幕上......

感谢您阅读我的罗嗦回复!任何建议仍然受到赞赏!