IOS开发-UI学习-UINavigationController(导航控制器)的使用

UINavigationController是IOS 中常用的功能,基本用法如下:

1、在AppDelegate.m中添加如下代码:

 1 #import "AppDelegate.h"
 2 #import "MainViewController.h"
 3
 4 @interface AppDelegate ()
 5
 6 @end
 7
 8 @implementation AppDelegate
 9
10
11 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
12
13
14 //   注意:如果保留storyboard中的viewcontroller的话,就不用第16行到20行的创建window的语句
15
16 //    创建window,设置背景色
17     self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
18     self.window.backgroundColor = [UIColor colorWithRed:0.638 green:0.876 blue:1.000 alpha:1.000];
19 //    让当前window称为主窗口
20     [self.window makeKeyAndVisible];
21
22
23
24
25 //    设置window的根视图
26     MainViewController *mainVC = [[MainViewController alloc]init];
27
28 //    设置导航控制器的根视图为mainviewcontroller类的实例mainVC
29     UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:mainVC];
30
31 //    设置window的根视图为nav
32     self.window.rootViewController = nav;
33
34
35 //    给导航栏着色
36     nav.navigationBar.barTintColor = [UIColor colorWithRed:1.000 green:0.400 blue:1.000 alpha:1.000];
37
38 //    给导航栏添加图片
39     [nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"barimage"] forBarMetrics:UIBarMetricsDefault];
40
41
42
43
44     return YES;
45 }

注意:使用以上功能时先在Main.storyboard中删除viewcontroller,然后添加十六到二十行语句,如果不删除Main.storyboard中的viewcontroller的话,就不需要使用十六到二十行多语句来添加window。

新建MainViewController类,继承自UIViewController,然后在MainViewController.m中添加以下代码:

 1 #import "MainViewController.h"
 2 #import "FirstViewController.h"
 3 @interface MainViewController ()
 4
 5 @end
 6
 7 @implementation MainViewController
 8
 9 - (void)viewDidLoad {
10     [super viewDidLoad];
11
12 //    设置标题
13 //    self.navigationItem.title = @"微信";
14
15 //    设置按钮
16     UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
17     btn1.backgroundColor = [UIColor redColor];
18     [btn1 addTarget:self action:@selector(gotofirst) forControlEvents:UIControlEventTouchUpInside];
19     [self.view addSubview:btn1];
20
21
22 //    自定义标题(按钮、可点击)
23     UIButton *titlebtn = [UIButton buttonWithType:UIButtonTypeCustom];
24     titlebtn.frame = CGRectMake(0, 0, 100, 44);
25     [titlebtn setTitle:@"我可以点击" forState: UIControlStateNormal];
26     [titlebtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
27     titlebtn.titleLabel.font = [UIFont systemFontOfSize:16];
28     [titlebtn addTarget:self action:@selector(titlebtnAction) forControlEvents:UIControlEventTouchUpInside];
29     self.navigationItem.titleView = titlebtn;
30
31
32 //    自定义左、右按键
33     UIBarButtonItem *leftItem = [[UIBarButtonItem alloc]initWithTitle:@"左边" style:UIBarButtonItemStylePlain target:self action:@selector(leftItemAction)];
34
35     UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithTitle:@"右边" style:UIBarButtonItemStylePlain target:self action:@selector(rightItemAction)];
36
37 //    self.navigationItem.leftBarButtonItem = leftItem;
38 //    self.navigationItem.rightBarButtonItem = rightItem;
39
40 //    使用数组给右边添加多个按钮
41     self.navigationItem.rightBarButtonItems = @[leftItem,rightItem];
42
43
44
45
46
47 }
48
49 -(void)rightItemAction{
50      NSLog(@"右边按钮被点击了");
51 }
52
53
54 -(void)leftItemAction{
55     NSLog(@"左边按钮被点击了");
56 }
57
58 -(void)gotofirst{
59     FirstViewController *firstVC = [[FirstViewController alloc]init];
60     [self.navigationController pushViewController:firstVC animated:YES];
61
62 }
63 -(void)titlebtnAction{
64     NSLog(@"我被点击了");
65 }
66
67
68
69 - (void)didReceiveMemoryWarning {
70     [super didReceiveMemoryWarning];
71     // Dispose of any resources that can be recreated.
72 }
73
74 /*
75 #pragma mark - Navigation
76
77 // In a storyboard-based application, you will often want to do a little preparation before navigation
78 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
79     // Get the new view controller using [segue destinationViewController].
80     // Pass the selected object to the new view controller.
81 }
82 */
83
84 @end

新建FirstViewController类,然后在FirstViewController.m中添加以下代码:

 1 #import "FirstViewController.h"
 2 #import "MainViewController.h"
 3
 4 @interface FirstViewController ()
 5
 6 @end
 7
 8 @implementation FirstViewController
 9
10 - (void)viewDidLoad {
11     [super viewDidLoad];
12
13     self.view.backgroundColor = [UIColor blackColor];
14
15
16
17     //    设置按钮
18     UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
19     btn1.backgroundColor = [UIColor redColor];
20     [btn1 addTarget:self action:@selector(goback) forControlEvents:UIControlEventTouchUpInside];
21     [self.view addSubview:btn1];
22 }
23
24
25 -(void)goback{
26
27 //按指定返回
28 ////    返回根视图
29 //    [self.navigationController popToRootViewControllerAnimated:YES];
30 //
31 ////    返回上一个视图
32 //    [self.navigationController popViewControllerAnimated:YES];
33
34
35
36 //通过循环比较返回
37     for (UIViewController *tmp in self.navigationController.viewControllers) {
38         if ([tmp isKindOfClass:[MainViewController class]]) {
39             [self.navigationController popToViewController:tmp animated:YES];
40         }
41     }
42
43
44 }
45
46
47 - (void)didReceiveMemoryWarning {
48     [super didReceiveMemoryWarning];
49     // Dispose of any resources that can be recreated.
50 }
51
52 /*
53 #pragma mark - Navigation
54
55 // In a storyboard-based application, you will often want to do a little preparation before navigation
56 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
57     // Get the new view controller using [segue destinationViewController].
58     // Pass the selected object to the new view controller.
59 }
60 */
61
62 @end

通过以上代码就可以实现两个viewcontroller的切换,是通过导航控制器实现的。

时间: 2024-10-16 19:58:11

IOS开发-UI学习-UINavigationController(导航控制器)的使用的相关文章

【iOS开发-21】UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解

(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最以下,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界面,也就是用户看到的界面. (2)我们须要把导航控制器载入到APP中,须要把这个导航控制器设置为window的根视图控制器(都是控制器类,能够赋值),这样就相当于载入到了window里. (3)我们要在栈中新增或者删除一个视图控制器,就须要得到导航控制器,一般在栈中得全部视图控制器都有一个self.

iOS开发UINavigation系列四——导航控制器UINavigationController

iOS开发UINavigation系列四--导航控制器UINavigationController 一.引言 在前面的博客中,我么你介绍了UINavigationBar,UINavigationItem和UIToolBar,UINavigationController是将这些控件和UIViewController紧密的结合了起来,使用导航,我们的应用程序层次会更加分明,对controller的管理也更加方便.前几篇博客地址如下: UINavigationBar:http://my.oschina

IOS开发UI篇-NavigationController的控制器之间的跳转

一.效果图如下 1> 第一个控制器的NavigationBar隐藏 2> 有按钮,可以跳转到下一个控制器,返回上一个控制器或者根控制器 二.思路代码 思路: 1> 设置window的跟控制器为navigationController 2> 设置一个控制器的基类 主要代码实现如下: AppDelegate.m // // AppDelegate.m // navigation的简单实用(纯代码) // // Created by gxiangzi on 15/8/7. // Copy

iOS开发UI篇—导航控制器属性和基本使用

IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController *nav=[[UINavigationControlleralloc]init]; 2.设置导航控制器为window的根视图 self.window.rootViewController=nav; 3.添加 YYOneViewController  *one = [[YYOneViewContro

iOS开发UI篇—多控制器和导航控制器简单介绍

iOS开发UI篇—多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如此,用1个控制器去管理其他多个控制器 比如,用一个控制器A去管理3个控制器B.C.D.控制器A被称为控制器B.C.D的“父控制器”:控制器B.C.D的被称为控制器A的“子控制器” 为了便于管理控制器,iOS提供了2个比较特殊的控

IOS开发UI篇—导航控制器属性和基本使用 - 文顶顶

原文  http://www.cnblogs.com/wendingding/p/3768622.html IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) UINavigationController *nav=[[ UINavigationController alloc ] init ]; 2.设置导航控制器为window的根视图 self . window . rootViewController =nav

学习IOS开发UI篇--UI知识点总结(四) UITabelView/UITableViewCell

UITabelView:常用属性 @property (nonatomic)          CGFloat    rowHeight;             // will return the default value if unset @property (nonatomic)          CGFloat     sectionHeaderHeight;   // will return the default value if unset @property (nonatom

学习IOS开发UI篇--UI知识点总结(三) UIScrollView/UIPageControl/NSTimer

UIScrollView:常用属性 @property(nonatomic)   UIEdgeInsets     contentInset;               // default UIEdgeInsetsZero. add additional scroll area around content @property(nonatomic,getter=isPagingEnabled) BOOL   pagingEnabled;     // default NO. if YES,

学习IOS开发UI篇--UITableView/数据模型嵌套/UITableViewCell/Cell的重用

1.UITableView ================================================== UITableView有两种格式:group和plain 2.UITableView如何展示数据 ================================================== UITableView需要一个数据源(dataSource)来显示数据 凡是遵守UITableViewDataSource协议的OC对象,都可以是UITableView的

IOS UINavigationController 导航控制器

/** 导航控制器掌握: 1.创建导航控制器 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 2.zhan (zhan 中所有的子控制器) self.navigationController.viewControllers; 3.将控制器压入zhan 中 [self.navigationController pushView