2012-10-19 54 views
1

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

我已经做了很多年的AS3开发,所以我的思想在MovieClips/Sprites和Display列表的上下文中在屏幕上显示图形。

从我的理解好了,所以......

  1. 一个的viewController是一种类来处理图形在一些 方式,然后让你做他们的东西?它最基本的意义是什么?
  2. 你似乎添加viewControllers到一个窗口类,我想有点像 添加一个显示对象显示列表?
  3. 什么是viewController为你做的最基本的意义?
  4. 是否有某些事情你肯定不能和他们做或不应该跟他们做 ?
  5. viewControllers是否需要以某种方式连接到iOS框架的其余部分才能正常工作(除了被添加到窗口之外)。
  6. 他们究竟如何使用数据? (我已经阅读了MVC,我理解这在概念上是一个稍微不同的问题),因为据我所知,您不会将数据硬编码到viewController中,那么viewController如何访问任何静态数据?
  7. 比方说,我只是想在屏幕上投射一张图片,viewController在这个过程中究竟扮演什么角色?它只是处理那个过程的一个小方面,还是整个演出和处理所有事情?
  8. 一个viewController处理多个图像吗?它是否就像它的名词,屏幕上显示的所有图像都是“控制器”,还是一次处理一张图像?
  9. 什么是viewControllers连接到它处理的图像?它包含对它们的引用?

我使用的是麻雀的框架,帮助,但我仍希望能够得到我的头周围viewControllers是所以我知道如何正确地使用它们。

哈,我为上述我表示歉意我知道它必须看起来像我完全困惑:)感谢您的任何建议。

回答

3

希望这有助于你:

  1. 一个的viewController是一种类来处理图形以某种方式,然后让你做他们的东西?

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

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

    我不太了解AS3,因此我无法将显示列表与ViewControllers进行比较。但基本上ViewControllers可以处理视图之间的不同类型的转换并访问视图中显示的数据(设置/读取) 。

  3. 什么是viewController为你做的最基本的意义?

    就像我上面写的。最基本的意义是,他们解释用户 在视图上所做的操作以及取决于用户的操作会更改 模型。

  4. 是否有某些事情你绝对不能与他们做或不应该与他们做?

    保持模型和控制器之间的边界总是很困难。 他们彼此很接近。所以我通常尝试的是将 取代所有的逻辑资料(如计算,数据库访问等等),这样做更多属于模型部分。但是,你可以在控制器中使用这些外部类别 。

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

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

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

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

  7. 比方说,我只是想在屏幕上向上抛出一个图像,viewController在那个过程中会发挥什么作用?它只是处理那个过程的一个小方面,还是整个演出和处理所有事情?

    的UIViewController的将存储的内部属性(UIImageView的*) 这与你 已在厦门国际银行文件中创建的UIImageView连接界面生成器。因此,通过这些属性,您可以通过控制器更改 图像。

  8. 一个viewController能处理多个图像吗?它是否就像它的名词,屏幕上显示的所有图像都是“控制器”,还是一次处理一张图像?

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

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

    是的,它就像是对UIElement的引用。然后,您可以更改 无论UIImageView的财产,你直接从 的UIViewController

一些有用的链接想:

1

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

以下是问题的答案:

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

简而言之,视图控制器是MVC模式中的控制器。进一步阅读使你了解最新的这种模式之前,请检查此链接:

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

OK,基本上是一个控制器管理的意见的集合。它还从您的模型中提取数据并设置视图的状态。需要注意的是,这些视图对您的模型(您的数据)一无所知,并且该模型对您的视图一无所知。控制器还接收来自视图的事件并决定如何相应地更改模型。它本质上是管理你的视图和模型之间的同步。

有些技术可以帮助自动执行此操作,例如KVO和键值绑定。谷歌搜索将帮助你。

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