首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

iOS 深入懂得UINavigationController 和 UIViewController 之间的关系

2013-12-22 
iOS 深入理解UINavigationController 和 UIViewController 之间的关系创建三个类BasicViewController : UI

iOS 深入理解UINavigationController 和 UIViewController 之间的关系
创建三个类

BasicViewController : UIViewController SecondViewController : UIViewController ThirdViewController : UIViewController 


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

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

其中在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;}


分配内存如图


热点排行