doproio / practice-of-ios

practice-of-ios
24 stars 4 forks source link

【第五章学习笔记】导航控制器基本概念和用法 #7

Open jeakey opened 9 years ago

jeakey commented 9 years ago

导航控制器基本概念

导航控制器是以栈的形式来实现,一个视图控制器以入栈(push)的方式加入导航控制器,以出栈(pop)的方式移除,所以出栈以后,相应的视图控制器也将销毁。

导航控制器包括导航栏(NavigationBar)和底部工具栏(UIToolBar)两部分组成。 image

实现导航控制器

// 导航控制器初始化
RootViewController  *rootVC = [[RootViewController alloc] init];
UINavigationController *navigation=[[UINavigationController alloc]initWithRootViewController:rootVC];
self.window.rootViewController = navigation;

// 子控制器设置title
self.title=@"title";//控制器本身实现
[pageVC setTitle:@"title"];//外部改变

// 控制器之间导航
[self.navigationController pushViewController:pageVC animated:YES];
[self.navigationController popToRootViewControllerAnimated:YES];
[self.navigationController popViewControllerAnimated:YES];
[self.navigationController popToViewController:pageVC animated:YES];

// 显示隐藏导航栏和工具栏
[self.navigationController setNavigationBarHidden:YES animated:YES];
[self.navigationController setToolbarHidden:YES animated:YES];

导航控制器层次关系

image

UINavigationBar

image image

image

导航控制器的委托方法

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated;

本章作业

参照下面的例子,首页上放置一个按钮,点击切换到另一个view1(4分),在view1上放置两个按钮,点击第一个按钮返回到根页面,点击第二个按钮切换到子页面(8分),在子页面放置两个按钮,点击第一个按钮返回到根页面,点击第二个按钮返回到上一级页面(12分),自定义首页导航栏右上角按钮,点击在页面内增加一个按钮,并依次命名为view2、view3...依次类推,点击这些按钮,切换到跟view1同样的页面,只是title改为按钮相应的文字(16分)。 具体请参考: https://modao.io/app/2meosEpFMDGNM5yBpB0R

jeakey commented 9 years ago

bindy:16分 erickchen:16分 hahnzhu:16分 faycheng:12分