Sky*_*ler 85 uiviewcontroller viewcontroller ios
在iOS中,在UIViewController的视图中有一个嵌套的视图控制器视图通常是不好的编程习惯吗?比方说,我希望有某种响应用户触摸的互动元素,但只占屏幕的25%.
我想我会把这个嵌套的视图控制器添加到我的UIViewController中,例如:
[self.view addSubview: nestedViewController.view];
Run Code Online (Sandbox Code Playgroud)
Chr*_*ner 141
不,这通常是很好的设计,它有助于保持您的视图控制器简洁.但是,您应该使用视图控制器包含模式,请查看以下文档.
使用Interface Builder和Storyboard进行设置非常简单,请查看对象库中的Container View.
这是一个故事板中的人为例子.在这个例子中,你将有4个视图控制器,一个容纳3个容器,每个容器一个.当您呈现包含所有容器的最左侧控制器时,Storyboard将自动初始化并嵌入另一个3.您可以通过该childViewControllers
属性访问这些子视图控制器,或者有一种方法可以覆盖prepareForSegue:sender:
并捕获目标视图控制器即将被召唤的segue.如果需要,还可以将属性传递给子视图控制器.
Mac*_*wia 52
我把这段代码放在父视图控制器中.这对我很有效.
对象C.
-(void)viewDidLoad{
[super viewDidLoad];
InnerViewController *innerViewController = [self.storyboard instantiateViewControllerWithIdentifier:INNER_VIEW_CONTROLLER];
[self addChildViewController:innerViewController];
[self.view addSubview:innerViewController.view];
[innerViewController didMoveToParentViewController:self];
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特:
let childViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildViewController"),
self.addChildViewController(childViewController)
self.view.addSubview(childViewController.view)
childViewController.didMove(toParentViewController: self)
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用IB并放置容器视图.UIViewController将自动显示(在本例中为XCode 9):
这是我的Swift 3解决方案基于Swift Developers On FB的答案
let childViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildPageViewController"),
self.addChildViewController(childViewController)
self.view.addSubview(childViewController.view)
childViewController.didMove(toParentViewController: self)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56755 次 |
最近记录: |