您的位置:首页 > 其它

容器视图控制器

2015-09-09 20:56 393 查看
1.创建一个继承自UIViewController的ContainerViewController的视图控制器作为窗口的根视图控制器

self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

self.window.rootViewController = [ContainerViewController new];

2.创建三个继承自UIViewController的视图控制器,作为容器控制器的子视图控制器

@interface ContainerViewController ()

@property(nonatomic,strong) LoginViewController *loginVC;

@property(nonatomic,strong) RegisterViewController *registerVC;

@property(nonatomic,strong) FindPassWordViewController *findPassWordVC;

@end

//添加子控制器

self.loginVC = [LoginViewController new];

[self addChildViewController:_loginVC];

self.registerVC = [RegisterViewController new];

[self addChildViewController:_registerVC];

self.findPassWordVC =[FindPassWordViewController new];

[self addChildViewController:_findPassWordVC];

//添加一个根视图

[self.view addSubview:self.loginVC.view];

3./在containerView上添加一个UIsegmentedControl的对象,用于切换三个视图

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:@[@"登陆",@"注册",@"找回密码"]];

segmentedControl.frame = CGRectMake(10, self.view.frame.size.height-40, self.view.frame.size.width-20,35);

segmentedControl.selectedSegmentIndex = 0;

segmentedControl.momentary = YES;

[self.view addSubview:segmentedControl];

//为segmentedControl绑定事件

[segmentedControl addTarget:self action:@selector(segmentedControlAction:) forControlEvents:UIControlEventValueChanged];

//实现三个视图的切换的事件

-(void)segmentedControlAction:(UISegmentedControl *)sender

{

//方法一:

//把下标为0的视图移除

// [self.view.subviews[0] removeFromSuperview];

//

// switch (sender.selectedSegmentIndex) {

// case 0:{//登陆界面

// [self.view insertSubview:self.loginVC.view atIndex:0];

// break;

// }

// case 1:{//注册界面

// [self.view insertSubview:self.registerVC.view atIndex:0];

// break;

// }

// case 2:{//找回密码

// [self.view insertSubview:self.findPassWordVC.view atIndex:0];

// break;

// }

// }

//方法二:通过容器控制器得到所有的子控制器

NSArray *array = self.childViewControllers;

//获得所有的子视图,并移除下标为0的视图

[self.view.subviews[0] removeFromSuperview];

//获得分段控制器选中的下标的对应的视图控制器

UIViewController *vc = array[sender.selectedSegmentIndex];

//将选中的视图控制器上的视图加到第0个视图上

[self.view insertSubview:vc.view atIndex:0];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: