Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.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开发-在视图控制器中设置视图_Iphone_Uiview_Uiviewcontroller_Methods_Initialization - Fatal编程技术网

iPhone开发-在视图控制器中设置视图

iPhone开发-在视图控制器中设置视图,iphone,uiview,uiviewcontroller,methods,initialization,Iphone,Uiview,Uiviewcontroller,Methods,Initialization,我正在学习在没有Interface Builder的情况下为iPhone开发(个人偏好),我不确定应该在视图控制器的哪个功能中设置视图:init、viewdiload或loadView。我在某个地方读到,如果有的话,只对视图控制器使用init,而不设置视图,因为这可能会导致问题。我还了解到viewDidLoad仅用于从nib文件加载,但当我尝试使用它时,它起到了作用。。那么,我应该在这三种方法中分别添加哪些内容呢 谢谢 每种方法都有自己的目的 1) 初始化 此方法仅用于初始化ViewContro

我正在学习在没有Interface Builder的情况下为iPhone开发(个人偏好),我不确定应该在视图控制器的哪个功能中设置视图:init、viewdiload或loadView。我在某个地方读到,如果有的话,只对视图控制器使用init,而不设置视图,因为这可能会导致问题。我还了解到viewDidLoad仅用于从nib文件加载,但当我尝试使用它时,它起到了作用。。那么,我应该在这三种方法中分别添加哪些内容呢


谢谢

每种方法都有自己的目的

1) 初始化

此方法仅用于初始化ViewController,不需要重写此方法,但如果要在加载任何视图之前执行自定义初始化,则可以在此处执行此操作。您有不同风格的init方法,您可以在apple站点的文档中查看

2) 负荷视图 此方法用于以编程方式创建视图。如果未重写此方法,默认的w将为您创建一个空视图,但如果是,则必须初始化viewController.view属性,当UIViewController视图被推入超级视图时,将调用此属性

3) viewDidLoad
在屏幕上加载视图后(在调用loadView并在超级视图或窗口上推送视图后),将调用此方法。您可以在此处执行以下操作:可以将子视图添加到控制器视图,还可以在加载视图后执行其他设置。无论是从nib还是以编程方式创建视图,此方法都有效。

您确定吗,因为这是来自viewDidLoad上的apple文档:如果视图控制器未从nib文件归档,则在设置其视图后将调用此方法。因此,子类应该重写此方法,而不是loadView方法,以初始化从nib加载的对象。-------这相当于说nib->viewDidLoad,编程->loadView,对吗?不,这意味着如果您使用nib,您不会重写loadView,因为视图设置已经在nib中为您完成。这就是说,如果你想在一个视图控制器中做额外的设置,而你正在使用一个nib作为一个视图,你必须在viewDidLoad中做,不能在loadViewOk中做,所以loadView->只有当我需要一个普通UIView以外的东西时,比如如果我有我自己的UIView子类,通常甚至不覆盖viewDidLoad->设置所有的控件,并将它们添加到self.view。和init->仅当我需要初始化视图控制器时。类似的,如果你想在不使用nib的情况下在viewdidload或loadview中设置视图组件,你可以选择