当前位置: 首页 > news >正文

【TabBar嵌套Navigation案例-新特性页面-代码位置 Objective-C语言】

一、接下来,我们来说这个新特性页面

通知

1.首先,看一下我们的示例程序,这里改一下,加一个叹号,

通知

command + R,

通知

好,首先啊,这里边有一个新特性页面,当我这个程序是第一次安装、第一次运行、还有呢、就是当这个应用程序更新的时候,我应该去加载这个新特性页面,

然后呢,这个新特性页面,实际上,就是一个Controller,就是一个CollectionViewController啊,就是一个Controller,

然后呢,如果你是第一次运行、或者是更新的时候、就应该让Window的根控制器,变成你新特性的这个Controller,

如果呢,你不是第一次,或者不是更新的情况下,那么,直接就显示到你的那个tabbarController上,就可以了,

所以呢,我们这个时候啊,肯定是要在AppDelegate里边,在你设置控制器的时候,我们先把最后一份代码复制一份儿,备份一下,

通知

改名叫09-彩票-新特性-代码位置,

通知

来到我们的AppDelegate里边,

通知

Window的RootViewController,是在这一块儿,在一定条件下,应该是tabbarController,

在另外的条件下,应该是显示新特性页面,所以,我们肯定是要在这儿写代码的,这是第一,

2.然后呢,接下来,我们就要来说,怎么着去判断第一次运行、或者是更新的情况,然后,就应该显示到这个新特性的情况,

然后,其他的情况,就应该显示的是tabbar的情况,

首先呢,我们的思路啊,大体是这个样子的,我们说,版本号,是在info.plist里边,

通知

没问题吧,这个1.0,就是版本号,

我们要把这些版本号,保存到沙盒当中去,每一次,在你切换控制器之前,在你一上来要显示,不确定显示哪一个控制器之前,先判断一下,你当前沙盒里边的这个版本号,你沙盒里边存的这个版本号,跟我当前跑的这个程序的info.plist里面的版本号,是不是一致的,如果是不一致的,那也就意味着,要不你就是更新了,要不你就是第一次运行,然后,我就应该去加载一个新特性页面,如果是一致的,就意味着,我之前已经跑过这个程序了,然后呢,把它去显示tabbar界面,就可以了,

总之,我要把版本号保存一下,然后呢,加载这个控制器之前,去进行判断,这是我要做的事情,首先呢,我们在Delegate里边,先写几个方法,

通知

我要把它拆开了,先写几个方法,这几个方法啊:

1)把版本号保存到沙盒

2)读取沙盒里面的版本号

3)读取info.plist里面的版本号

我先把这些方法都写好了,然后,再去代码里边去拼,

2.好,首先呢,我要写一下啊,我来先写一个,把当前的版本号保存到沙盒,

// 把当前的版本号保存到沙盒

- (void)saveAppVersion{

}

通知

我只要调用这个方法,就能把当前info.plist版本号,保存到沙盒当中去,

那么,首先,我要去获取到当前的版本号,

// 获取当前程序的版本号

当前程序的版本号,也就意味着,我要去获取info.plist里面的这个1.0,

通知

这个字符串,这个东西怎么着去获取,

首先,我怎么着去获取info.plist,这个文件,

info.plist,虽然它是一个plist,但是它的根节点,是不能够改变的,

info.plist,都是字典,

通知

然后,我们怎么着去获取这个字典,系统给我们提供了方法,

// 获取info 字典

[NSBundle mainBundle].infoDictionary;

通知

相关文章:

【TabBar嵌套Navigation案例-新特性页面-代码位置 Objective-C语言】

一、接下来,我们来说这个新特性页面 1.首先,看一下我们的示例程序,这里改一下,加一个叹号, command + R, 好,首先啊,这里边有一个新特性页面,当我这个程序是第一次安装、第一次运行、还有呢、就是当这个应用程序更新的时候,我应该去加载这个新特性页面, 然后呢,这…...

程序员如何提升并保持核心竞争力?——深入钻研、广泛学习与软技能的培养

一、引言  随着人工智能的不断发展,尤其是AIGC系列大语言模型的涌现,AI辅助编程工具正在日益普及,这对程序员的工作方式产生了深刻的影响。面对这一变革,程序员应如何应对?是专注于某个领域深耕细作,还是…...

Linux之Docker虚拟化部署

上传docker安装包 解压安装包 将解压后的docker文件夹移动到/usr/local/文件夹下 docker 启动命令/usr/local/docker/dockerd 但是启动报错,意思是没有docker用户组 创建docker用户组,执行完会生成套接字文件 将套接字文件加入该用户组管理 第二个错误原…...

重构部队信息安全:部队涉密载体建设新策略

一、完善保密体系架构 1. 加强保密规章制度:制定或刷新关于机密信息管理的相关规定,明确机密信息的生成、复制、传输、使用、储存及销毁等核心环节的操作准则与责任分配,确保整个流程的标准化运作。 2. 明确个人保密义务:通过保密…...

使用Node.js的readline模块逐行读取并解析大文件

在Node.js环境中处理大文件是一个常见的需求,尤其是在处理日志文件、数据库导出、或任何形式的大规模文本数据时。由于Node.js是基于事件循环和非阻塞I/O的,它非常适合处理这类任务。然而,直接将整个文件内容加载到内存中可能会导致内存溢出&…...

浅谈软件安全开发的重要性及安全开发实践

在当今数字化时代,软件已成为企业运营的核心驱动力。然而,随着网络环境的日益复杂和黑客技术的不断演进,软件安全问题日益凸显,成为企业不可忽视的重大挑战。本文将从法律法规要求、企业核心数据资产保护、企业信誉等角度&#xf…...

在 NodeJs 里面如何获取 APK 的名称和 icon

最近想用 electron 写一个 adb 的可视化客户端,在展示安装的应用时遇到了如何获取 APK 的名称和 icon 的问题。下面就是一些解决问题的思路。 前提:在这里默认大家已经下载好 apk, 下面 localApkPath 就是你下载好的 apk 的路径。 小提示,示…...

基于VirtualBox和Ubuntu的虚拟环境搭建

VirtualBox简介 VirtualBox 是一款开源虚拟机软件。 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。简单易用,可虚拟的系统包括Windows&…...

【PHP源码】匿名来信系统H5版本V1.0免费开源

你的匿名来信H5一封你的来信源码/表白祝福短信程序/往来信/传话短信源码支持邮件发信与手机短信发信“你的匿名来信”是最近某音上爆火的一个活动话题,可以通过H5网站,编辑自己想要对某人说的话或者祝福,网站会把您想说的发给您预留的号码&am…...

Prompt技巧总结和示例分享

"Prompt"(提示)在人工智能中通常指的是输入给模型的文本,用于引导模型生成预期的输出。在使用人工智能助手时,有效的提示技巧可以帮助你获得更准确和有用的回答。 以下是一些单轮对话提示时的技巧: 明确具体…...

大厂校招:海能达嵌入式面试题及参考答案

SPI 协议的一些基础知识 SPI(Serial Peripheral Interface)即串行外设接口,是一种高速的、全双工、同步的通信总线。 SPI 主要由四根信号线组成: 时钟线(SCLK):由主设备产生,用于同步数据传输。时钟的频率决定了数据传输的速度。主设备输出 / 从设备输入线(MOSI):主…...

wrk(1) command

文章目录 1.简介2.特点3.格式4.选项5.示例参考文献 1.简介 wrk 是一个现代的 HTTP 压力测试工具,利用现代多线程技术和高效的网络 I/O 处理,能够生成大量的并发请求,用以测试 HTTP 服务器的性能。 它是作为一种更现代的压力测试工具而设计的…...

【小程序 - 大智慧】Expareser 组件渲染框架

目录 问题思考课程目标Web Component类型说明定义组件属性添加 Shadow DOMTemplate and SlotExparser 框架原理自定义组件内置组件 下周计划 问题思考 首先,给大家抛出去几个问题: 前端框架 Vue React 都有自己的组件库,但是并不兼容&#…...

vue + echarts 快速入门

vue echarts 快速入门 本案例即有nodejs和vue的基础,又在vue的基础上整合了echarts Nodejs基础 1、Node简介 1.1、为什么学习Nodejs(了解) 轻量级、高性能、可伸缩web服务器前后端JavaScript同构开发简洁高效的前端工程化 1.2、Nodejs能做什么(了解) Node 打破了…...

服务器几核几G几M是什么意思?如何选择?

服务器几核几G几M是什么意思?我们建站、搭建网络平台都要用到云服务器,不管在腾讯云、阿里云还是别的云服务平台选购,都会接触到服务器配置。云服务器就是把物理服务器(俗称“母鸡”),用虚拟机技术虚拟出多…...

K8S服务发布

一 、服务发布方式对比 二者主要区别在于: 1、部署复杂性:传统的服务发布方式通常涉及手动配置 和管理服务器、网络设置、负载均衡等,过程相对复 杂且容易出错。相比之下,Kubernetes服务发布方式 通过使用容器编排和自动化部署工…...

Allen Institute for Artificial Intelligence (Ai2) 发布开源多模态语言模型 Molmo

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

Html CSS 布局,位置处理 居中 对齐

Html CSS 布局&#xff0c;位置处理 1、居中布局 1、div 让内部div居中对齐 html <div class"container"><div class"item">I am centered!</div> </div>style .container {border: 2px solid rgb(75, 70, 74);border-radius:…...

Spring MVC系统学习(二)——Spring MVC的核心类和注解

Spring MVC&#xff08;Model-View-Controller&#xff09;是Spring框架的一个模块&#xff0c;用于构建基于Web的应用程序。它使用模型、视图和控制器分离的设计模式&#xff0c;使得Web开发更加模块化和灵活。在学习Spring MVC时&#xff0c;有几个核心类和注解是非常关键的&…...

conda虚拟环境安装包、依赖同一管理

在 Python 的虚拟环境中&#xff0c;每个环境都是独立的&#xff0c;这意味着即使两个环境需要相同的库&#xff0c;它们也会分别安装各自的副本。这样做是为了避免不同项目之间相互影响&#xff0c;确保每个项目都有一个干净且隔离的环境。 方法一&#xff1a;使用 Conda 的共…...

Unity网络开发记录(四):在unity中进一步封装客户端类

在上一篇文章中&#xff0c;简单的封装了一下服务端中相关的socket对象&#xff0c;为了可以更方便的使用。所以在本篇中&#xff0c;进一步封装一下在unity中的相关客户端类 封装客户端类&#xff0c;首先采用单例模式&#xff0c;然后采用两个队列来存储我们相关的收发信息 p…...

Linux内核中的UART驱动-详解Linux内核UART驱动:结构与功能分析

一、UART概述 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;&#xff0c;即通用异步收发器&#xff0c;是一种串行通信接口&#xff0c;用于在计算机和外部设备之间传输数据。它特别适用于短距离、低速、串行和全双工的数据传输。在Linux内核中&a…...

威胁检测与防范:如何及时、准确对抗安全风险

随着技术的飞速发展&#xff0c;网络空间中的威胁日益多样化、隐蔽化&#xff0c;给个人、企业乃至国家的信息安全带来诸多挑战。面对严峻的网络威胁&#xff0c;传统的防火墙、入侵检测系统&#xff08;IDS&#xff09;等防御手段虽能在一定程度上抵御外部攻击&#xff0c;但依…...

数据结构串的kmp相关(求next和nextval)

傻瓜版&#xff0c;用来演示手算过程&#xff0c;个人理解用的&#xff0c;仅供参考。...

创建游戏暂停菜单

创建用户控件 设置样式 , 加一层 背景模糊 提升UI菜单界面质感 , 按钮用 灰色调 编写菜单逻辑 转到第三人称蓝图 推荐用 Set Input Mode Game And UI , 只用仅UI的话 增强输入响应不了 让游戏暂停的话也可以用 Set Game Paused , 打勾就是暂停 , 不打勾就是继续游戏 , 然后…...

seata服务端部署

1.下载seata 官网下载地址&#xff1a;http://seata.io/zh-cn/blog/download.html 或者下载 作者已经下载的压缩包1.4.0 注意&#xff01;&#xff01;&#xff01; 要参考对应的版本&#xff0c;否则可能出现无法正常启动的情况。 参考文档 下载完毕后解压压缩文件 2.修改配…...

理解Python闭包概念

闭包并不只是一个python中的概念&#xff0c;在函数式编程语言中应用较为广泛。理解python中的闭包一方面是能够正确的使用闭包&#xff0c;另一方面可以好好体会和思考闭包的设计思想。 1.概念介绍 首先看一下维基上对闭包的解释&#xff1a; 在计算机科学中&#xff0c;闭包…...

51单片机的教室智能照明系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块DS1302时钟模块光照传感器红外传感器温度传感器LED等模块构成。适用于教室灯光全自动控制、教室节能灯控制、教室智能照明等相似项目。 可实现功能: 1、LCD1602实时显示时间、温度、光照强度等信息 2、光照强度传…...

一款资产进行快速存活验证工具

01工具介绍 &#xff08;下载地址见最后&#xff09; 在日常工作的渗透测试过程中&#xff0c;经常会碰到渗透测试项目&#xff0c;而Web渗透测试通常是渗透项目的重点或者切入口。通常拿到正规项目授权后&#xff0c;会给你一个IP资产列表和对应的Web资产地址&#xff0c;这时…...

I/O中断处理过程

中断优先级包括响应优先级和处理优先级&#xff0c;响应优先级由硬件线路或查询程序的查询顺序决定&#xff0c;不可动态改变。处理优先级可利用中断屏蔽技术动态调整&#xff0c;以实现多重中断。下面来看他们如何运用在中断处理过程中&#xff1a; 中断控制器位于CPU和外设之…...

北京手机网站制作/做百度推广的公司电话号码

问题描述 在使用CupertinoPageScaffold&#xff0c;在child添加ListView时会有20的top-padding&#xff08;只有在设置navigationBar的backgroundColor时会出现&#xff09;。 原因深究 ListView底层调用了SliverPadding&#xff0c;而SliverPadding的默认有20的padding /// By…...

网上虚拟银行注册网站/营销活动有哪些

对于刚接触linux系统的学员来说&#xff0c;确实是一件比较困难的事情&#xff0c;造成这种局面主要原因之一是windows的设计考虑到用户的体验效果&#xff0c;提供了更好的用户操作效果。以至于用户接触的最多的系统&#xff0c;所以刚接触linux的时候会感觉很不适应&#xff…...

做网站要注意的/病毒什么时候才能消失

1. 异常检测 VS 监督学习 0x1&#xff1a;异常检测算法和监督学习算法的对比 总结来讲&#xff1a; 1. 在异常检测中&#xff0c;异常点是少之又少&#xff0c;大部分是正常样本&#xff0c;异常只是相对小概率事件 2. 异常点的特征表现非常不集中&#xff0c;即异常种类非常多…...

烟台建站模板源码/高清免费观看电视网站

1、卡方检验概述 卡方检验被誉为二十世纪科学技术所有分支中的20大发明之一,它的发明者卡尔皮尔逊是一位历史上罕见的百科全书式的学者,研究领域涵盖了生物、历史、宗教、哲学、法律。是英国著名的统计学家、生物统计学家、应用数学家,又是名副其实的历史学家、科学哲学家、…...

织梦dedecms网站更换域名后文章图片路径批量修改/软件制作

利用springmvc接收前台ajax传过来的数据完成注册功能。为了方便把&#xff0c;前台js的model和后台的user写成一致的功能。代码如下前端&#xff1a;var User function() {var id null;var name null;var password null;var sex null;var telephone null;var role null;…...

宝鸡优化网站/黄山seo推广

邪恶的Windows自动更新&#xff0c; 劝大家关掉这个狗日的后门 今天&#xff0c;接到客户的电话&#xff0c;公司开发的某业务系统出故障了 于是通过VPN在家里直接访问该系统&#xff0c;结果系统器返回 Service Unavailable ------------------------------------------------…...