了解应用程序委托和视图控制器如何相互关联

时间:2010-03-05 12:46:44

标签: iphone cocoa

我正在努力掌握Cocoa(Iphone)MVC设计的基本原理,但它非常强硬。我来自网络,书籍的几个示例应用程序..但我发现没有任何与我正在搜索的内容有关,因为大多数示例只是提供了一个简单的应用程序(即,一个带有反面viewcontr和更多的视图控制器..)。所以让我们看看是否有人愿意帮助我指出正确的方向:

  • 我的目标是构建一个有点复杂的应用程序。我想有以下观点关系:

    1. 演示文稿视图(将有一个控制器加载几个内存密集型变量)

    2. 主菜单视图:导致全新复杂视图的不同选项。例如,一个Begin选项,用于启动应用允许执行的任何操作;第二个选项,用于执行另一个具有不同视图和操作的复杂任务,一个用于配置选项的选项选项;帮助选项,关于选项,等等..

  • 在第一种方法中,我尝试在MainWindow笔尖下的视图中嵌入几个圆角按钮,并带有关联的应用委托。这种方法虽然提出了我如何设法在视图/视图控制器之间切换的问题。由于我可能没有完全理解基础知识而没有被捕获的例外,我试图继续进行更“简单”的事情。

  • 然后我来到了Navigation和Tabbar默认的Cocoa控制器。我不想要一个tabbar,虽然它可以适用于这个应用程序的其他部分。然后我认为导航控制器最适合这种情况。

  • 因此,如果我构建一个层次结构应用程序,其根目录是导航控制器,我是否在正确的位置?我已经看到我可以自定义主视图来显示一个自定义表格,其中每个单元格都可以作为一个按钮来生成其各自的视图+ viewcontroller。从这里开始,我可以继续构建这种层次的视图/视图控制器的“叶子节点”,对吧?虽然我不喜欢默认提供导航控制器的动画,但我想我可以摆脱它...

  • 所以总结起来很简单:我想获得一个菜单,就像通常可以在Cocos2d应用程序上看到的那样。

问这个很令人沮丧,我知道它必须简单但我发现文档非常混乱以及我见过的例子.GUI编程它是一个艰难的学习曲线:/

提前感谢您的任何答复,请原谅我这篇长篇文章。

2 个答案:

答案 0 :(得分:7)

  

因此,如果我,我是否在正确的位置   在其中构建一个层次结构的应用程序   root是导航控制器吗?

几乎。导航控制器(尽管是UIViewController的子类)不控制视图,而是控制其他视图控制器。导航控制器按下并弹出视图控制器,这反过来导致控制器的相应视图加载并变为可见。

因此,“根视图”实际上是由导航控制器topViewController属性中的视图控制器控制的视图。

app delegate用于保存导航控制器并告诉它哪个视图控制器首先推入堆栈。之后,视图控制器会告诉导航控制器何时推送它们。

否则,你走在正确的轨道上。您应该始终尝试以分层方式在移动平台上显示信息,从最顶层的一般开始,并在深入研究时变得更具体。

你不应该因为发现这种混乱而感到尴尬。 90%的介绍/教程信息(包括书籍和Apple资源)专注于界面的gee whiz方面,并且几乎没有告诉您实际的应用程序设计或所有部分在概念上如何组合在一起。

答案 1 :(得分:1)

你是否知道有关应用代表对导航控制器的信息很少。我一直在挖掘并试图让我的所有屏幕都连接起来。看着我的应用程序开始看起来更像是一些Frankenstein怪物用户界面。 ahahah

Itunes开发视频非常适合查看推送和弹出式堆栈UIviews理论。我发现他们移动得有点快,但看完之后双手确实更有意义。我一直强迫自己观看它们,并对最新情况有一个非常好的感觉。希望很快有一个很好的应用程序。