Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 什么';UIClass和UIClassController之间的区别是什么?_Iphone_Ios_Uitableview_Uiview_Uiviewcontroller - Fatal编程技术网

Iphone 什么';UIClass和UIClassController之间的区别是什么?

Iphone 什么';UIClass和UIClassController之间的区别是什么?,iphone,ios,uitableview,uiview,uiviewcontroller,Iphone,Ios,Uitableview,Uiview,Uiviewcontroller,我开始在Xcode上开发iPhone,我不知道视图和视图控制器之间的区别,也不知道表视图和表视图控制器之间的区别。有人有简单的解释吗?让我们先来看看UIView和UIViewController类 UIViewController是为管理UIViews而构建的Cocoa Touch类。它希望有一个视图层次结构,但您不会“自动”获得视图(这有点不准确;请参见下面的编辑)。通常,您可以通过在视图控制器上调用initWithNibName来获取视图 Interface Builder中有一些内置的魔法

我开始在Xcode上开发iPhone,我不知道视图和视图控制器之间的区别,也不知道表视图和表视图控制器之间的区别。有人有简单的解释吗?

让我们先来看看
UIView
UIViewController

UIViewController
是为管理UIViews而构建的Cocoa Touch类。它希望有一个视图层次结构,但您不会“自动”获得视图(这有点不准确;请参见下面的编辑)。通常,您可以通过在视图控制器上调用
initWithNibName
来获取视图

Interface Builder中有一些内置的魔法,它知道如果文件的所有者是
UIViewController
(或子类),则有一个名为view的属性。就这样

链接视图控制器和视图后,视图控制器将为您完成大量工作:它注册为视图触摸事件的响应器,注册设备旋转通知(并自动处理,如果您愿意),帮助您处理动画的一些细节,并半自动处理内存不足的情况

如果不调用
initWithNibName
或手动设置view属性,则view属性getter将在view为nil时调用loadView。loadView的默认实现将查看您是否设置了nibBundle和nibName,并尝试从此处加载视图(这就是为什么大多数时候不必调用initWithNibName),但如果未设置这些属性,它将使用默认值实例化UIView对象。因此,从技术上讲,是的,它会自动附带自己的
UIView
,但大多数情况下,这没有什么价值

现在进入TableView和UITableViewController类

TableViewController
是内置TableView的
ViewController
。这将使所需的委托方法已经声明和设置。此VC已经是TableView委托和数据源。它无法调整大小。优点是易于使用,缺点是灵活性非常有限

TableView
就是一个TableView(UIView的子类)。它可以添加到ViewController并调整大小,与另一个基于视图的对象一起使用,等等。优点是灵活性,缺点是您必须自己设置委托和数据源方法(在我看来,花时间获得灵活性是值得的)

另一个注意事项是,在使用新的静态TableView单元格(iOS5的一部分)时,必须使用TableViewController

另外,请查看以下链接以了解有关方法的详细说明


让我们先进入
UIView
UIViewController

UIViewController
是为管理UIViews而构建的Cocoa Touch类。它希望有一个视图层次结构,但您不会“自动”获得视图(这有点不准确;请参见下面的编辑)。通常,您可以通过在视图控制器上调用
initWithNibName
来获取视图

Interface Builder中有一些内置的魔法,它知道如果文件的所有者是
UIViewController
(或子类),则有一个名为view的属性。就这样

链接视图控制器和视图后,视图控制器将为您完成大量工作:它注册为视图触摸事件的响应器,注册设备旋转通知(并自动处理,如果您愿意),帮助您处理动画的一些细节,并半自动处理内存不足的情况

如果不调用
initWithNibName
或手动设置view属性,则view属性getter将在view为nil时调用loadView。loadView的默认实现将查看您是否设置了nibBundle和nibName,并尝试从此处加载视图(这就是为什么大多数时候不必调用initWithNibName),但如果未设置这些属性,它将使用默认值实例化UIView对象。因此,从技术上讲,是的,它会自动附带自己的
UIView
,但大多数情况下,这没有什么价值

现在进入TableView和UITableViewController类

TableViewController
是内置TableView的
ViewController
。这将使所需的委托方法已经声明和设置。此VC已经是TableView委托和数据源。它无法调整大小。优点是易于使用,缺点是灵活性非常有限

TableView
就是一个TableView(UIView的子类)。它可以添加到ViewController并调整大小,与另一个基于视图的对象一起使用,等等。优点是灵活性,缺点是您必须自己设置委托和数据源方法(在我看来,花时间获得灵活性是值得的)

另一个注意事项是,在使用新的静态TableView单元格(iOS5的一部分)时,必须使用TableViewController

另外,请查看以下链接以了解有关方法的详细说明


视图控制器顾名思义,是一个控制其管理的“视图”的实体。因此,不将视图控制器渲染到屏幕。您只需渲染视图。可以将视图渲染到屏幕上。它可以接受触摸事件、手势等。它可以包含许多其他子视图,也可以是另一个视图的子视图。但是拍下这整张照片。是什么管理所有这些视图(以及子视图)及其机制?这就是视图控制器。视图控制器是包含视图组合的对象,它管理这些视图的工作方式。

视图