创建父子控制器

小码哥大神的代码,确实精简!

1、最终结果如下面三个图,点击one,two,three,分别出现3个不同的控制器

直接代码:(三个控制器自己创建)

 1 #import "ViewController.h"
 2 #import "ZWOneViewController.h"
 3 #import "ZWTwoViewController.h"
 4 #import "ZWThreeViewController.h"
 5 @interface ViewController ()
 6 /** 正在显示的控制器 */
 7 @property (weak, nonatomic)UIViewController *showingVC;
 8 @end
 9 @implementation ViewController
10 
11 - (void)viewDidLoad {
12     [super viewDidLoad];
13     //添加到子控制器上
14     [self addChildViewController:[[ZWOneViewController alloc] init]];
15     [self addChildViewController:[[ZWTwoViewController alloc] init]];
16     [self addChildViewController:[[ZWThreeViewController alloc] init]];
17 }
18 - (IBAction)buttonClick:(UIButton *)button {
19     //移除当前显示的控制器
20     [self.showingVC.view removeFromSuperview];
21     //获得控制器的位置索引
22     NSUInteger index = [button.superview.subviews indexOfObject:button];
23     //添加控制器View
24     self.showingVC = self.childViewControllers[index];
25     //设置尺寸
26     self.showingVC.view.frame = CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height - 64);
27     //添加到控制器上
28     [self.view addSubview:self.showingVC.view];
29 }
30 @end

 

注:1、扩展性非常好,直接数组中添加需要添加的控制器

  2、由于是索引,一定要注意三个控制器的顺序,否则会出现点击后出现其它控制器。如下图:

posted @ 2016-05-02 17:40  hissia  阅读(678)  评论(0编辑  收藏  举报