Tag: model view controller

UIView中的IBAction – 与MVC兼容?

我试图了解Objective-C在iOS应用中MVC模式的实现。 现在我有一个DataProvider对象,它保存我的数据并将其提供给我的应用程序(Model)中的其他对象。 此外,我有一个视图(.xib)与一个额外的类( UIView ;让我们称之为“ViewClass”)。 我告诉我的视图是我的ViewClass的一个子类,所以我可以创buildIBOutlet到我的子视图,如标签和IBAction到我的button。 所以这显然是我在MVC模式中的视图。 最后但并非最不重要的,我有一个ViewController对象,它有一个对我的DataProvider的引用,并保存我的视图的对象。 当ViewController被加载到内存中时,它通过调用addSubview:(UIView *)view来实例化viewDidLoad的View并将其添加到其自己的addSubview:(UIView *)view 。 这是MVC模式中的我的控制器。 到目前为止好,但我不明白的是以下。 根据MCV-Pattern,View应该只显示ViewController提供的数据,它从Model中获取数据。 任何逻辑操作只能发生在ViewController因为它负责这种任务。 但是,如果我在我的“ ViewClass ”中创build一个IBAction ,我不得不在我的View中有一些编程逻辑。 可以说,我想提交一个表单,用户通过点击一个button在某个文本框中input的数据。 在我的ViewClass我有一个IBOutlet的文本字段,以便以后可以参考它,并阅读用户input的数据。 我有一个IBAction的button,可以捕捉点击事件。 发送数据的代码现在写在我的视图的IBAction方法中,所以我在我的视图中有程序逻辑。 对我的问题:这是不是违反了MVC模式? 我可能会传递我的ViewController引用到我的视图,而我创build视图的实例,然后调用我的ViewController在IBAction ,然后获取和发送数据的方法。 但我无法想象这是正确的做法。 或者我理解错了什么? 提前致谢。

什么应该拥有MVC模式的模型?

自从我记得以来,我一直在制作iOS应用程序,但直到最近我还没有实现编程风格,直到最近我有一个实习编程。 我很早就学到了很多面向对象的概念,因为我意识到生活中对他们的了解是多余的,但是我从来没有学过的东西是MVC模式。 为了给出上下文,假设我在单个SolarSystemView ( UIView一个子类)内绘制了一个太阳系。 我的SolarSystemView应该有一个SolarSystemView类的实例variables(一个包含所有重要的行星和stelar属性的数据结构的类),还是应该由一个SolarSystemViewController的实例拥有? 或者是完全不同的东西? 我找不到任何示例代码给出了令人满意的答案。 我想如果说这个视图拥有这个模型,那么操作就会非常stream畅,但是这样做也不是很好的风格。 毕竟, SolarSystem实例必须以某种方式dynamic更改,并且具有与SolarSystemView更新相同或相似的速率。