我是obj-c / iOS的新手,至少在概念上理解至少是viewControllers。我已经阅读了很多Apple Doc,我甚至在xCode中使用过viewControllers,但我仍然不太了解它们是什么,或者使用它们的最佳方法是什么。
我多年来一直是AS3开发人员,所以我的思维工作在MovieClips / Sprites和Display列表的上下文中,以便在屏幕上显示图形。
好的,从我的理解......
我正在使用Sparrow框架,但我仍然希望能够了解viewControllers是什么,所以我知道如何正确使用它们。
哈,我为上述事件道歉,我知道它看起来好像我完全糊涂了:)感谢任何建议。答案 0 :(得分:3)
希望这可以帮助你:
viewController是一种以某种方式处理图形然后允许你用它们做某事的类?
它是视图(Xib文件)和数据之间的粘合剂(可能是 CoreData或您在后端使用的任何内容)。所有UI元素 您正在使用通常定义为视图中的属性的视图 控制器可以访问它们。
这是最基本的意义吗? 您似乎将viewControllers添加到Window类,我想这有点像将显示对象添加到显示列表?
我真的不知道AS3所以我无法将显示列表与ViewControllers进行比较。但基本上ViewControllers可以处理 视图和访问之间的不同类型的转换 (设置/读取)视图中显示的数据。
viewController在最基本的意义上为你做了什么?
就像我上面写的那样。最基本的意义上他们解释用户是什么 在视图上并根据用户的操作更改 模型。
是否有某些事情你绝对不能用它们或者不应该用它们做什么?
始终难以保持模型和控制器之间的边界。 他们彼此非常接近。所以我通常尝试的是 分配所有逻辑内容(如计算,数据库访问等) on)这更多属于模型部分。但是,你是 在控制器中使用这些外部类。
viewControllers是否需要以某种方式连接到iOS框架的其余部分才能运行(除了被添加到窗口之外)。
好像你已经编写了ViewController需要的 连接到视图。否则它没有多大意义。有 UIViewController的不同子类型,如UINavigationController 你可能需要覆盖一些其他方法来提供 这些特殊子类所需的整体功能。
他们究竟如何使用数据? (我已经阅读了MVC,我理解这在概念上是一个稍微不同的问题)因为我理解你没有将数据硬编码到viewController中,所以viewController如何访问任何静态数据?
可能有不同的方法来存储数据。最简单的方法 将数据直接存储在UIViewController中。 这可以是一个自定义类,它是数据的容器。所有 更改将直接写入此类并由 UIViewController中。但在大多数情况下,使用它是有意义的 CoreData(负责将数据读/写成 sqlite数据库)。您可以将CoreData视为您的模型和 UIViewController从那里获取数据并传递数据 UIViewController已从View中收到它。
假设我只想在屏幕上显示图像,viewController在该过程中究竟会扮演什么角色?它只是处理该过程的一个小方面,还是整个节目处理一切?
UIViewController会存储一个内部属性(UIImageView *) 这是在Interface Builder中与UIImageView连接的 已在Xib文件中创建。因此,您可以更改这些属性 通过你的控制器图像。
一个viewController是否处理多个图像?是它的术语,屏幕上显示的所有图像的“控制器”,还是一次处理一个图像?
是的,这不是一个大问题。您可以拥有任意数量的图像。 您只需要在UIViewController中定义属性 并链接到视图。
viewControllers与它处理的图像的连接是什么?它包含对它们的引用?
是的,它就像是对UIElement的引用。然后你可以改变 UIImageView的任何属性,你想直接来自 的UIViewController
一些有用的链接:
答案 1 :(得分:1)
我建议你查一下: https://stackoverflow.com/questions/1939/how-to-articles-for-iphone-development-and-objective-c
以下是您的问题的答案:
UIViewController
被设置为UIWindow
的根。例如,UINavigationController
是UIViewController
的子类,它堆叠UIViewController
以处理导航。UINavigationController
或UITabBarController
等内置组件,则非常有用。UIView
中。UIView
附带的UIViewController
将包含UIImageView
。您的UIViewController
将与其建立连接,以便进行您需要的任何更改,例如,当用户按下按钮时更改图像。UIViews
,因此可以包含多个UIImageViews
(它是UIView
的子类)UIImageView
中,并且会以编程方式或IBOutlet
链接。答案 2 :(得分:1)
简而言之,视图控制器是MVC模式中的控制器。请在进一步阅读之前查看此链接,以便了解此模式:
http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html
好的,基本上控制器管理一组视图。它还从模型中提取数据并设置视图的状态。重要的是要注意,视图对您的模型(您的数据)一无所知,并且模型对您的视图一无所知。控制器还从视图中接收事件,并决定如何相应地更改模型。它实际上是在管理视图和模型之间的同步。
有些技术可以帮助实现这一功能,例如KVO和键值绑定。谷歌搜索将帮助您。
还有一件事。除控制器外,您的应用程序的任何其他部分都不应访问您的视图。因此,通常在应用程序中,控制器倾向于彼此通信,例如通过转换或导航控制器下的控制器之间的委托模式。因此,您的应用程序主干往往是控制器彼此交谈。