ios-导航控制器UINavigationController
ios-导航控制器UINavigationController
前篇
- 关于如何使用iOS开发中导航控制器的教程介绍 - https://www.jishudog.com/7584/html
由于使用 webview 的时候, load 出来的 页面是全屏的 网页, 没有地方触发 webview 的关闭, 也就是 有去无回, 因此需要使用 一个导航控制器去关闭 webview. (虽然还有其他办法去关闭 webview, 但是感觉 导航控制器 简单点)
流程
新建一个 EmptyViewController, 用来装 view (如: webview)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29// -------------- EmptyViewController.h
@interface EmptyViewController : UIViewController
@property (strong, nonatomic) UIViewController* lastVc; // 保存上一个 UIViewController, 关闭 EmptyViewController 时需要重置回上一个 UIViewController
- (IBAction) onClick04:(id)obj;
- (IBAction) onClick05:(id)obj;
- (IBAction) onBackNavItem:(id)obj;
@end
// -------------- EmptyViewController.h
#import "EmptyViewController.h"
@implementation EmptyViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"--- EmptyViewController.viewDidLoad");
self.navigationItem.title=@"第一个界面";
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"< Back" style:UIBarButtonItemStylePlain target:self action:@selector(onBackNavItem:)];
}
- (IBAction) onBackNavItem:(id)obj {
NSLog(@"--- onBackNavItem");
// 点击 back 时, 重置回 上一个 UIViewController
UIWindow* topWin = [UIApplication sharedApplication].windows[0];
topWin.rootViewController = self.lastVc;
}
- (void)viewDidDisappear:(BOOL)animated{ // UIViewController dismiss 的回调, 用来做清理工作
[super viewDidDisappear:animated];
}
- (IBAction) onClick04:(id)obj {}
- (IBAction) onClick05:(id)obj {}
@end创建 导航控制器 UINavigationController
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16//1.创建一个导航控制器
UINavigationController *nav=[[UINavigationController alloc]init];
//2.设置导航控制器为window的根视图
UIWindow* topWin = [UIApplication sharedApplication].windows[0];
UIViewController* srcVc = topWin.rootViewController;
topWin.rootViewController = nav;
//3.添加子控制器到导航控制器中
// 方式 1. 自定义 ui 布局的 vc
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Empty" bundle:nil];
EmptyViewController *one = [storyboard instantiateViewControllerWithIdentifier:@"sid_empty"];
// 方式 2. 空 vc
// EmptyViewController* one = [EmptyViewController new];
one.lastVc = srcVc;
[nav pushViewController:one animated:YES];done.