UIViewController和ViewController有什么区别?

4

我刚刚注意到添加了一个新的ViewController后,它不像Xcode创建的那个UIViewController。在谷歌上没有找到答案,希望你们中的一个能够向我解释这两者之间的区别。

编辑

为了澄清我的问题:

这是我的UIViewController声明:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

这是我的ViewController的声明:

 #import "ViewController.h"

@interface GameViewController : ViewController

这两个ViewControllers有什么区别?

请展示你所谈论的代码。 - trojanfoe
@trojanfoe 这里不需要展示任何代码。一个类是ViewController的子类,而另一个类是UIViewController的子类。 - Dalibor
ViewController声明在哪里? - trojanfoe
"ViewController" 必须自定义,因此需要编写代码。 - Sebastian Hojas
自定义?你在说什么?没有更多细节,这个问题无法回答。 - trojanfoe
4个回答

2

UIViewController 提供了视图的基础架构,当您创建自己的 ViewController 时,它是从 UIViewController 继承而来的。只要明确一点:您不会修改 UIViewController,而是通过子类化它,然后进行自己的修改。


那与问题完全无关,除了字面上的“UIViewController”之外。请考虑删除您的回答。 - Tobi Nary

2

UIViewController是由苹果提供的一个类。为了对您的应用程序进行UI定制,通常会创建UIViewController的子类。 ViewController是一个继承自UIViewController的示例子类。


我在想OP是否指的是默认模板子类。尽管还没有代码来验证。 - Tobi Nary
所以如果 ViewControllerUIViewController 的子类,而您通常创建 UIViewController 的子类,为什么还需要 ViewController 呢?它是否具有 UIViewController 无法实现的功能? - Dalibor
UIViewController并不是不能做到,只是它本身没有。UIViewController提供了一个空的视图,而你可能需要在其中添加一些按钮、图片、视图等,以创建你所需的应用程序界面。 - johnyu
ViewController的存在是为了让快速创建简单应用变得更加容易,并且为初学iOS编程的人提供更轻松的项目起步。 - johnyu
有人可以展示一下这个 ViewController 的声明吗? - trojanfoe

2
一个视图控制器是一个概念,它管理你的用户界面和交互的一部分。
根据文档

视图控制器是应用程序内部结构的基础。每个应用程序至少有一个视图控制器,大多数应用程序有多个。每个视图控制器都管理应用程序用户界面的一部分以及该界面与底层数据之间的交互。视图控制器还促进了用户界面不同部分之间的过渡。

UIViewController只是已定义的“视图控制器”的基类,你可以像你说的那样添加一个视图控制器,但是视图控制器有一个与之关联的类,可以是UIViewController、UITableViewController或其变体/子类。

2
这两个视图控制器有什么区别?
并没有太大的区别,但这取决于在“ViewController”中定义的功能。通常会创建一个包含所有派生类中所需公共功能的“基类”,而视图控制器类也不例外。
但如果“ViewController”中没有真正的功能,则可以将其删除,并直接从“UIViewController”派生“GameViewController”。
#import <UIKit/UIKit.h>

@interface GameViewController : UIViewController

如果您在问题中所暗示的那样,Xcode可以一次生成ViewControllerGameViewController,我会非常惊讶。然而,如果它确实这样做了,那对我来说是新的,我不知道为什么它会这样做。


不,我的意思是Xcode创建了UIViewController。我创建了GameViewController - Dalibor
@Dalibor 好的,所以你的问题仍然不清楚。 - trojanfoe
好的,我一开始感到困惑,没有意识到我的“GameViewController”是我“ViewController”的子类。我认为“ViewController”是由苹果提供的一个类。 - Dalibor
@Dalibor 哦,好的。我明白了。 - trojanfoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接