#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.
}