iOS 深入理解UINavigationController 和 UIViewController 之间的关系

创建三个类
BasicViewController : UIViewController 
SecondViewController : UIViewController
ThirdViewController : UIViewController


然后我们在BasicViewController .m文件中push一个viewController:
SecondViewController *svc = [SecondViewController new];
[self.navigationController [color=red]pushViewController[/color]:svc animated:true];
在SecondViewController.m文件中pop出viewController:
[self.navigationController [color=red]popViewControllerAnimated[/color]:true]

问题就来了,
[color=red]push和pop是同一个viewController,那为什么用self.navigationController 就可以知道了[/color]

其中在AppDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

BasicViewController *basicViewController = [BasicViewController new];//实例化内存后,_parentViewController-->nil
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:basicViewController];
// self.window.rootViewController = basicViewController.parentViewController;
self.window.rootViewController = navigationController;

[self.window makeKeyAndVisible];
return YES;
}


等价于
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

BasicViewController *basicViewController = [BasicViewController new];//实例化内存后,_parentViewController-->nil
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:basicViewController];
self.window.rootViewController = basicViewController.parentViewController; //不可以注释上一句,因为上一句是为_parentViewController实例化
// self.window.rootViewController = navigationController;

[self.window makeKeyAndVisible];
return YES;
}


分配内存如图
[img]http://dl2.iteye.com/upload/attachment/0092/2147/8a25cf60-3168-3f11-baff-ed5b6c228269.jpg[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值