11 view addsubview ios
这两种方法都将视图添加为父视图的子视图,视图可以接收事件.什么时候使用哪一个?
Rob*_*Rob 22
这一切都取决于您希望如何管理新的子视图.如果您希望新的子视图由当前视图的视图控制器管理(例如,您正在添加一些简单的UILabel对象),您只需调用即可addSubview.另一方面,如果新的子视图有自己的视图控制器(即它是足够复杂的视图集合,具有丰富的功能,您希望用自己的控制器封装所有这些复杂性来管理这个新子视图所做的一切)然后你打电话addChildViewController来添加新的视图控制器,然后再打电话addSubview.
所以,请注意addChildViewController,它本身对视图没有任何作用.您通常会立即使用添加其视图的调用来跟踪它,例如,这是来自适用于iOS的View Controller编程指南的实现自定义容器视图控制器部分的略微阐明的示例:
[self addChildViewController:childViewController]; // add subview's view controller
childViewController.view.frame = ... // specify where you want the new subview
[self.view addSubview:childViewController.view]; // now you can add the child view controller's view
[childViewController didMoveToParentViewController:self]; // now tell the child view controller that the adding of it and its views is all done
Run Code Online (Sandbox Code Playgroud)
所以,这不是addSubviewvs 的问题addChildViewController,而是addSubviewvs addChildViewController+ addSubview.如果你打电话addChildViewController,你这样做的目的是addSubview在某个时候呼唤它的观点.
坦率地说,这个问题addSubview与addChildViewController+ addSubview很少,我们如何看待这一点.更合乎逻辑的思考方式是确定这个新视图是否有自己的视图控制器.如果是,则执行addChildViewController调用序列.如果没有,你只需打电话addSubview.
有关视图控制器包含的详细介绍(例如,该API的基本原理,保持视图层次结构与视图控制器层次结构同步的重要性等),请参阅WWDC 2011视频实现UIViewController包含.
小智 11
他们是非常不同的.addChildViewController将视图控制器与父容器视图控制器相关联,而addSubview将视图添加到要添加到的视图的视图层次结构中.在前一种情况下,新的子视图控制器将负责在事件是其父级的选定视图控制器时处理事件.考虑一个标签栏控制器 - 每个标签都有自己的关联"子"视图控制器,在父标签栏控制器的内容区域中显示其视图,并在标签栏中选择相应的标签时处理该视图中的任何用户交互.只有在拥有自定义容器视图并且想要将新视图控制器添加到其childViewControllers属性时,才应使用addChildViewController.如果您只想将新视图添加到可以接收事件的视图层次结构中,这听起来就像是这样,addSubview是可行的方法. "实现容器视图控制器"部分解释了addChildViewController的用途.
| 归档时间: |
|
| 查看次数: |
9134 次 |
| 最近记录: |