swift4--页面跳转的几种方法

2023-11-02

首先要在appDelegate里添加导航视图控制器navigationColler

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        //        let viewController = ViewController()
        self.window = UIWindow(frame: UIScreen.main.bounds)
        //        把初始视图控制器压入导航视图控制器
        let navigationController = UINavigationController(rootViewController: FirstViewController())
        //        把根视图控制器设为导航视图控制器
        self.window?.rootViewController = navigationController
        //        渲染出页面
        self.window?.makeKeyAndVisible()
        return true
    }

然后在初始视图控制器里添加代码(我这里是FirstViewContriller)

//
//  FirstViewController.swift
//  页面跳转的几种方法
//


import UIKit
//定义一个全局变量,用来记录当前显示器的编号
var pageNum = 0

class FirstViewController: UIViewController {
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            // Do any additional setup after loading the view.
            //        每次当前视图控制器创建一次,全局变量加一
            pageNum = pageNum + 1
            //        根据当前的全局变量名设置标题
            self.title = "Page\(pageNum)"
            self.view.backgroundColor = UIColor.purple
            //        添加一个页面跳转按钮
            let push = UIButton(frame: CGRect(x: 40, y: 120, width: 240, height: 40))
            push.setTitle("Push page", for: UIControlState())
            push.backgroundColor = UIColor.orange
            push.addTarget(self, action: #selector(pushPage), for: UIControlEvents.touchUpInside)
            self.view.addSubview(push)
            
            //        添加一个按钮,点击时返回上一个页面
            let pop = UIButton(frame: CGRect(x: 40, y: 180, width: 240, height: 40))
            pop.setTitle("Pop Page", for: UIControlState())
            pop.backgroundColor = UIColor.orange
            pop.addTarget(self, action: #selector(popPage), for: UIControlEvents.touchUpInside)
            self.view.addSubview(pop)
            
            //        添加一个按钮,点击时跳转到指定序号的页面
            let index = UIButton(frame: CGRect(x: 40, y: 280, width: 240, height: 40))
            index.setTitle("Goto Index Page", for: UIControlState())
            index.backgroundColor = UIColor.orange
            index.addTarget(self, action: #selector(gotoIndexPage), for: UIControlEvents.touchUpInside)
            self.view.addSubview(index)
            
            //        添加一个按钮,点击时跳转到根视图
            let root = UIButton(frame: CGRect(x: 40, y: 340, width: 240, height: 40))
            root.setTitle("Goto root Page", for: UIControlState())
            root.backgroundColor = UIColor.orange
            root.addTarget(self, action: #selector(gotoRootPage), for: UIControlEvents.touchUpInside)
            self.view.addSubview(root)
        }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    //    创建第一个按钮绑定的方法打开页面(入栈)
    @objc func pushPage(){
        //        实例化第二个视图控制器
        let viewController = FirstViewController()
        //        把视图压入导航视图
        self.navigationController?.pushViewController(viewController, animated: true)
    }
    //    第二个按钮的方法,将导航视图控制器从堆栈中移除
    @objc func popPage(){
        self.navigationController?.popViewController(animated: true)
    }
    //    第三个按钮绑定的方法,根据全局序号,查找堆栈中指定序号的视图控制器
    @objc func gotoIndexPage(){
        let viewController = self.navigationController?.viewControllers[1]
        self.navigationController?.popToViewController(viewController!, animated: true)
    }
    //    创建第四个按钮绑定的方法,所有子视图出栈
    @objc func gotoRootPage(){
        self.navigationController?.popToRootViewController(animated: true)
    }
    
    
}

运行一下查看效果吧! 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

swift4--页面跳转的几种方法 的相关文章

随机推荐

  • Linux中top命令参数详解

    因为面试经常会问top命令用法 以及各个参数的含义 因此转载补充了了一下 以便自己学习 top命令经常用来监控linux的系统状况 是常用的性能分析工具 能够实时显示系统中各个进程的资源占用情况 top的使用方式 top d number
  • 小程序引入vant-Weapp保姆级教程及安装过程的问题解决

    小知识 大挑战 本文正在参与 程序员必备小知识 创作活动 本文同时参与 掘力星计划 赢取创作大礼包 挑战创作激励金 当你想在小程序里引入vant时 第一步 打开官方文档 第二步 切到快速上手 然后开始步骤一 步骤二 步骤三 你只会看到 以下
  • Awesome IoT

    本文来自 https github com HQarroum awesome iot 中文可以参考 https yq aliyun com articles 54793 Inspired by the awesome list thing
  • 基于BowyerWatson的Delaunay三角化算法实现

    实现效果如下图所示 代码 include
  • 【C++】 Qt-线程并发与线程同步

    文章目录 线程并发 线程同步 原子访问 InterLocked 关键段 Critical Section 也叫临界区 回顾单例出现的问题 关键段基本使用 封装关键段 Qt下的多线程 多线程与进度条 Qt QThread 线程并发 我们再创建
  • angular2下用http到由SpringMVC发布rest服务的服务器端拉取数据

    本文讲述如何使用angular2的http服务来去一台由SpringMVC发布的rest服务的服务器上拉取数据 我们现来上服务端代码 ResponseBody RequestMapping hero public Object getDat
  • linux服务器上前后端部署流程

    linux服务器上前后端部署流程 本文介绍如何在Linux上部署前段和后端的流程 以及遇见的bug Vue前端部署流程 首先 在服务器上 本文以华为云服务器为例 开启80端口 在服务器上下载nginx 更新apt源 sudo apt upd
  • Rust + Wasm 实现浏览器格式化 JSON

    本文代码 查看效果 依赖工具 cargo install wasm pack Cargo toml package name wasm bindgen record version 0 1 0 authors Li Lei
  • 如何解决段错误

    程序运行时崩溃应该是经常遇到的事情 本篇文中就来讲解一下在Linux下如何解决程序崩溃 也就是发生了段错误之后找到程序具体出错的地方 如果程序通过了编译 但是在使用命令 a out 运行时程序崩溃了 即显示 段错误 core dumped
  • Angular—目录

    开始Angular开发 Angular环境搭建 Angular开发准备 Angular页面搭建 Angular 路由 Angular 路由基础 Angular 路由数据传递 Angular 重定向路由 子路由 Angular 辅助路由 An
  • 蓝桥杯算法训练VIP-阶乘

    题目 题目链接 题解 思维 既然它要取最后一个非零位 那么我们第一时间想到的肯定是取模 只用保留后几位就行了 但是保留后几位呢 对10的多少次方取模合适呢 数据量是100 那么估算一下存在多少个零 能导致末尾零的出现无非就是乘以十的倍数或者
  • Java中的代码块

    1 什么是代码块 java代码中 直接写在 中的 没有方法名的方法称之为代码块 2 常见的代码块分类 1 静态代码块 2 构造代码块 3 局部代码块 4 同步代码块 3 静态代码块 1 特点 随着类的加载而执行 并且仅仅执行一次 优先于主函
  • win10下安装tensorflow-gpu1.13

    1 登录Anaconda官网 下载最新Python3 7版本 如图所示 对应的是windows 2 安装Anaconda时 记得选自动分配路径 就是在弹出的需要 的窗口 把两个选项都打勾 之后 打开Anaconda Navigator 点击
  • 使用String.split拆分多个空格的问题

    当用String split拆分字符串时 如果连着有两个或多个空格 那么得到的String数据就会包含一个空格 这样是不对的 使用如下方法可以解决 String split s 1
  • rsync基本命令,使用详细指导

    Rsync是一款强大的备份同步工具 这里对Rsync的基本命令和用法进行详细说明 Rsync基本命令 bash rsync 选项 lt 源 gt lt 目的地 gt 常用选项 v 详细输出 显示传输过程 r 递归处理 传输目录 a 归档模式
  • STM32H723+Lwip+ETH+CUBE 完整配置(排了巨多坑!)

    因为H723ZET6是ST目前最新的芯片 对于这个芯片的LWIP配置 官方库极其不友好 而且贼多BUG 踩了好久的坑 历经诸多苦难 终于能够正常PING通和进行TCP UDP通讯了 而且在国内基本上找不到H723ZET6的LWIP配置教程
  • 测试基础-动态黑盒测试

    1 动态黑盒测试 不深入代码细节测试软件的方法称为动态黑盒测试 动态 因为程序在运行 黑盒 测试时不知道程序如何工作 测试员输入数据 接受输出 检验结果 2 通过性测试和失效性测试 通过性测试 test to pass 确认软件至少能做什么
  • 50个渗透(黑客)常用名词及解释

    目录 前言 一 渗透测试 二 网络安全 三 安全攻击 四 黑客工具 五 渗透方法 六 网络钓鱼 七 攻击技术 八 其他名词 总结 前言 网络安全是当今互联网时代不可忽视的重要议题 随着科技的发展 黑客渗透技术也日益复杂和潜在危险 为了加强对
  • 首次参加字节飞书面试败北

    我17年正式本科毕业的 2021年是我自毕业后开始尝试投简历 以前大学有门课在智联上制作了简历 现在四年 我下载app上面就没了 我今年这次注册了boss直聘的这个 正好在315后面隔天注册的 发现挺多主动发起招呼的 我把猎头屏蔽了 个人有
  • swift4--页面跳转的几种方法

    首先要在appDelegate里添加导航视图控制器navigationColler func application application UIApplication didFinishLaunchingWithOptions launc