您的位置:首页 > 产品设计 > UI/UE

导航控制器UINavigationController

2015-09-11 21:34 459 查看
导航控制器 是基于栈来实现的 它会自动帮我们记录 咱们所需要切换的界面

咱们push(进入下一个页面)的时候 系统会自动 向栈中添加对象

1、首先得初始化一个窗口

self.window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];


1.1初始化一个视图控制器作为导航控制器的根视图

ViewController *viewController=[[ViewController alloc]init];


1.2初始化导航控制器 设置导航控制器的第一个页面(把导航控制器作为窗口的根视图控制器)

UINavigationController *nv = [[UINavigationController alloc]initWithRootViewController:viewController];

self.window.rootViewController=nv;
[self.window makeKeyAndVisible];


在ViewController里面

设值背景颜色(如果不设置背景颜色,进入这个页面的时候会卡顿)

self.view.backgroundColor = [UIColor grayColor];


设置导航栏(这一页面的标题)

self.title = @"首页";


设置一个按钮,使他点击跳进下一个页面

UIButton *buttonPush = [UIButton buttonWithType:UIButtonTypeCustom];
buttonPush.frame = CGRectMake(100, 200, 100, 40);
[buttonPush setTitle:@"进入下一页面" forState:UIControlStateNormal];

[buttonPush addTarget:self action:@selector(next) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:buttonPush];


跳转下一个面的方法

- (void)next
{
TWOViewController *two = [[TWOViewController alloc]init];

//通过导航控制器navigationController跳到下一个页面pushViewController这个是下一页面是:
[self.navigationController pushViewController:two animated:YES];
}


设置第二个ViewController,

如果跳进这一个界面出现卡顿,那么就要设置一下背景颜色(如果跳到这个界面 没有设置背景颜色,就会出现卡顿)

在导航栏中,系统自带有返回按钮,但是可以自己改写返回按钮

控制栏上的按钮

UIBarButtonItem *left = [[UIBarButtonItem alloc]initWithBarButtonSystemItem: UIBarButtonSystemItemCancel target:self action:@selector(back)];
//设置BarButtonItem的颜色
left.tintColor = [UIColor grayColor];

//设置导航栏上的内容
//设置内容里面 左侧按钮的属性
self.navigationItem.leftBarButtonItem = left;


返回上一页的方法

- (void)back
{
[self.navigationController popViewControllerAnimated:YES];

}


返回某一页的方法

viewControllers 记录了 所有push压栈过的viewcontroller

在想返回一个页面 也不想返回首页

[self.navigationController popToViewController: self.navigationController.viewControllers[1] animated:YES];


返回主页的方法

[self.navigationController popToRootViewControllerAnimated:YES];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: