无法理解iOS中的viewControllers

时间:2012-10-19 11:38:04

标签: ios uiviewcontroller sparrow-framework

我是obj-c / iOS的新手,至少在概念上理解至少是viewControllers。我已经阅读了很多Apple Doc,我甚至在xCode中使用过viewControllers,但我仍然不太了解它们是什么,或者使用它们的最佳方法是什么。

我多年来一直是AS3开发人员,所以我的思维工作在MovieClips / Sprites和Display列表的上下文中,以便在屏幕上显示图形。

好的,从我的理解......

  1. viewController是一种在某些方面处理图形的类 时尚,然后让你与他们做点什么?它最基本的含义是什么?
  2. 您似乎将viewControllers添加到Window类,我想这有点像 将显示对象添加到显示列表?
  3. viewController最基本的意义是什么?
  4. 是否有某些事情你肯定不能做或不应该做 跟他们一起?
  5. viewControllers是否需要以某种方式连接到iOS框架的其余部分才能运行(除了被添加到窗口之外)。
  6. 他们究竟如何使用数据? (我已经阅读了MVC,我理解这在概念上是一个稍微不同的问题)因为我理解你没有将数据硬编码到viewController中,所以viewController如何访问任何静态数据?
  7. 假设我只是想在屏幕上显示图像,viewController在该过程中究竟会扮演什么角色?它只是处理该过程的一个小方面,还是整个节目并处理所有事情?
  8. 一个viewController是否处理多个图像?是它的术语,屏幕上显示的所有图像的“控制器”,还是一次处理一个图像?
  9. viewControllers与它处理的图像的连接是什么?它包含对它们的引用?
  10. 我正在使用Sparrow框架,但我仍然希望能够了解viewControllers是什么,所以我知道如何正确使用它们。

    哈,我为上述事件道歉,我知道它看起来好像我完全糊涂了:)感谢任何建议。

3 个答案:

答案 0 :(得分:3)

希望这可以帮助你:

  1. viewController是一种以某种方式处理图形然后允许你用它们做某事的类?

      

    它是视图(Xib文件)和数据之间的粘合剂(可能是   CoreData或您在后端使用的任何内容)。所有UI元素   您正在使用通常定义为视图中的属性的视图   控制器可以访问它们。

  2. 这是最基本的意义吗? 您似乎将viewControllers添加到Window类,我想这有点像将显示对象添加到显示列表?

      

    我真的不知道AS3所以我无法将显示列表与ViewControllers进行比较。但基本上ViewControllers可以处理   视图和访问之间的不同类型的转换   (设置/读取)视图中显示的数据。

  3. viewController在最基本的意义上为你做了什么?

      

    就像我上面写的那样。最基本的意义上他们解释用户是什么   在视图上并根据用户的操作更改   模型。

  4. 是否有某些事情你绝对不能用它们或者不应该用它们做什么?

      

    始终难以保持模型和控制器之间的边界。   他们彼此非常接近。所以我通常尝试的是   分配所有逻辑内容(如计算,数据库访问等)   on)这更多属于模型部分。但是,你是   在控制器中使用这些外部类。

  5. viewControllers是否需要以某种方式连接到iOS框架的其余部分才能运行(除了被添加到窗口之外)。

      

    好像你已经编写了ViewController需要的   连接到视图。否则它没有多大意义。有   UIViewController的不同子类型,如UINavigationController   你可能需要覆盖一些其他方法来提供   这些特殊子类所需的整体功能。

  6. 他们究竟如何使用数据? (我已经阅读了MVC,我理解这在概念上是一个稍微不同的问题)因为我理解你没有将数据硬编码到viewController中,所以viewController如何访问任何静态数据?

      

    可能有不同的方法来存储数据。最简单的方法   将数据直接存储在UIViewController中。   这可以是一个自定义类,它是数据的容器。所有   更改将直接写入此类并由   UIViewController中。但在大多数情况下,使用它是有意义的   CoreData(负责将数据读/写成   sqlite数据库)。您可以将CoreData视为您的模型和   UIViewController从那里获取数据并传递数据   UIViewController已从View中收到它。

  7. 假设我只想在屏幕上显示图像,viewController在该过程中究竟会扮演什么角色?它只是处理该过程的一个小方面,还是整个节目处理一切?

      

    UIViewController会存储一个内部属性(UIImageView *)   这是在Interface Builder中与UIImageView连接的   已在Xib文件中创建。因此,您可以更改这些属性   通过你的控制器图像。

  8. 一个viewController是否处理多个图像?是它的术语,屏幕上显示的所有图像的“控制器”,还是一次处理一个图像?

      

    是的,这不是一个大问题。您可以拥有任意数量的图像。   您只需要在UIViewController中定义属性   并链接到视图。

  9. viewControllers与它处理的图像的连接是什么?它包含对它们的引用?

      

    是的,它就像是对UIElement的引用。然后你可以改变   UIImageView的任何属性,你想直接来自   的UIViewController

  10. 一些有用的链接:

答案 1 :(得分:1)

我建议你查一下: https://stackoverflow.com/questions/1939/how-to-articles-for-iphone-development-and-objective-c

以下是您的问题的答案:

  1. 不,它不处理图形。它是MVC设计模式的控制器。它处理其内容的生命周期(例如视图)和与之链接的数据。
  2. UIViewController被设置为UIWindow的根。例如,UINavigationControllerUIViewController的子类,它堆叠UIViewController以处理导航。
  3. (1)
  4. 中的回应
  5. 请尝试更具体地说明这个问题。
  6. 如前所述,如果您使用UINavigationControllerUITabBarController等内置组件,则非常有用。
  7. 例如,您可以将数据放在实例变量中,并将其显示在包含的UIView中。
  8. UIView附带的UIViewController将包含UIImageView。您的UIViewController将与其建立连接,以便进行您需要的任何更改,例如,当用户按下按钮时更改图像。
  9. 它可以包含多个UIViews,因此可以包含多个UIImageViews(它是UIView的子类)
  10. 如评论所述,它们将包含在UIImageView中,并且会以编程方式或IBOutlet链接。

答案 2 :(得分:1)

简而言之,视图控制器是MVC模式中的控制器。请在进一步阅读之前查看此链接,以便了解此模式:

http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

好的,基本上控制器管理一组视图。它还从模型中提取数据并设置视图的状态。重要的是要注意,视图对您的模型(您的数据)一无所知,并且模型对您的视图一无所知。控制器还从视图中接收事件,并决定如何相应地更改模型。它实际上是在管理视图和模型之间的同步。

有些技术可以帮助实现这一功能,例如KVO和键值绑定。谷歌搜索将帮助您。

还有一件事。除控制器外,您的应用程序的任何其他部分都不应访问您的视图。因此,通常在应用程序中,控制器倾向于彼此通信,例如通过转换或导航控制器下的控制器之间的委托模式。因此,您的应用程序主干往往是控制器彼此交谈。