多个视图控制器的视图切换

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;


@end

在内存警告时,会调用下面的那个方法


#import "AppDelegate.h"
#import "ContainerViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (void)dealloc
{
    [_window dealloc];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

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

    ContainerViewController *container = [[ContainerViewController alloc]init];

    _window.rootViewController = container;







    [container release];
    [_window release];
    [_window makeKeyAndVisible];
    return YES;
}


//在出现内存警告时,调用下面的这个方法
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{



}

下面是容器控制器的代码,有个方法,需要在。h文件中声明,不然就成私有方法了。

#import "ContainerViewController.h"
#import "LoginViewController.h"
#import "ResignViewController.h"


@interface ContainerViewController ()
@property(nonatomic,retain)LoginViewController *loginVC;
@property(nonatomic,retain)ResignViewController *resignVC;

@end

@implementation ContainerViewController



-(void)exchangeLoginViewAndREgister
{
    if (_loginVC.view.superview!=nil) {
        [_loginVC.view removeFromSuperview];
        [self.view addSubview:_resignVC.view];
    }else if(_resignVC.view.superview!=nil ){
        [_resignVC.view removeFromSuperview];
        [self.view addSubview:_loginVC.view];
    }
}



- (void)viewDidLoad {

    NSLog(@"%s",__FUNCTION__);
    self.view.backgroundColor  = [UIColor blueColor];


    //创建子视图控制器
    self.loginVC = [[LoginViewController alloc]init];


    self.resignVC = [[ResignViewController alloc]init];

    //添加子视图控制器

    [self addChildViewController:_loginVC];
    [self addChildViewController:_resignVC];



    //释放
    [_loginVC release];
    [_resignVC release];


    //让loginVC。view默认显示

    [self.view addSubview:_resignVC.view];
    [self.view addSubview:_loginVC.view];
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];


    //如果视图控制器管理的view被加载过,并且没有显示在window上,把view销毁
    if ([self isViewLoaded]&&self.view.window == nil) {


        self.view = nil;
    }


    // Dispose of any resources that can be recreated.
}





@end

下面是resignViewController.m的代码


#import "ResignViewController.h"
#import "ContainerViewController.h"

@interface ResignViewController ()

@end

@implementation ResignViewController

- (void)viewDidLoad {


    self.view.backgroundColor = [UIColor cyanColor];
    [super viewDidLoad];



    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

    button.frame = CGRectMake(100, 100, 40, 30);
    button.backgroundColor = [UIColor redColor];
    [button addTarget:self action:@selector(clickButton) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];
    // Do any additional setup after loading the view.
}


-(void)clickButton{

    //父类指针指向子类,需要强制转化一下,然后才能调用方法
    [(ContainerViewController *)self.parentViewController exchangeLoginViewAndREgister];
}

下面是LoginViewController.m中的代码


#import "LoginViewController.h"
#import "ContainerViewController.h"

@interface LoginViewController ()

@end

@implementation LoginViewController

- (void)viewDidLoad {


    self.view.backgroundColor = [UIColor greenColor];
    [super viewDidLoad];





    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

    button.frame = CGRectMake(100, 100, 40, 30);
    button.backgroundColor = [UIColor redColor];
    [button addTarget:self action:@selector(clickButton) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];






    // Do any additional setup after loading the view.
}


-(void)clickButton{

    //父类指针指向子类,需要强制转化一下,然后才能调用方法
    [(ContainerViewController *)self.parentViewController exchangeLoginViewAndREgister];
}

//视图将要出现
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    NSLog(@"%s",__FUNCTION__);
}


//视图已经消失
-(void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    NSLog(@"%s",__FUNCTION__);
}

//视图将要消失
-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    NSLog(@"%s",__FUNCTION__);
}

//视图已经出现
-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSLog(@"%s",__FUNCTION__);
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值