1. 程式人生 > 其它 >ios-導航控制器UINavigationController

ios-導航控制器UINavigationController

技術標籤:Iosios導航控制器


title: ios-導航控制器UINavigationController
categories: Ios
tags: [ios, UINavigationController, 導航控制器]
date: 2021-02-10 22:00:44
comments: false
mathjax: true
toc: true

ios-導航控制器UINavigationController


前篇

  • 關於如何使用iOS開發中導航控制器的教程介紹 - https://www.jishudog.com/7584/html

由於使用 webview 的時候, load 出來的 頁面是全屏的 網頁, 沒有地方觸發 webview 的關閉, 也就是 有去無回

, 因此需要使用 一個導航控制器去關閉 webview. (雖然還有其他辦法去關閉 webview, 但是感覺 導航控制器 簡單點)


流程

  1. 新建一個 EmptyViewController, 用來裝 view (如: webview)

    // -------------- 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");
        
    [email protected]
    "第一個介面"; 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
  2. 建立 導航控制器 UINavigationController

    //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];
    
  3. done.