网站首页 > 知识剖析 正文
置顶
菜鸟入门,各位大佬轻喷,如有谬误之处欢迎讨论建议,也欢迎各位道友与我同行
"不积跬步,无以至千里;不积小流,无以成江海"
继续
上文中已经实现了登陆成功过后进行跳转,然后主页有一个底部tabbar,并且有todo和setting两个页面
接下来我们将实现登陆后将登陆信息 ( 名称、是否已经登陆 )的缓存,在todo页面中显示用户名
并且使这个登陆状态在退出APP后再打开可以保持
最终效果如下
在这里插入图片描述
app缓存的基本使用
我们期望可以有一个缓存可以全局持久化保存我们的数据,如token等
这个缓存在退出APP重新登陆后不消失
并且这个缓存在修改时会同步到其它调用的地方。
那么此时应该有 @AppStorage 包装器出场。
基本使用如下
// IndexView.swift
import SwiftUI
struct IndexView: View{
// 把是否已经登陆
// 名称 isLogin,这个包装器将会覆盖默认值,并且它的修改会影响到视图渲染
// 其他的使用与 @State 基本一致
@AppStorage("isLogin") private var isLogin:Bool = false;
// 显示提示登陆
@State private var showAlertOrigin:Bool = true;
// 显示登陆表单
@State private var showLogin:Bool = false;
@State private var tabIndex:Int = 0;
// ... 省略以下大部分代码
}
同时我们将登陆表单页面里面的 isLogin 和 userName 属性改为
// LoginView.swift
@AppStorage("isLogin") private var isLogin:Bool = false;
@AppStorage("userName") private var userName:String = "";
并且在登陆成功后不再清空 userName ;
todo 页面展示用户名
根据我以往的编程经验,各个页面应当是一个独立的文件,以利于组织
所以我们将todo页面单独提出来写
import SwiftUI
struct TodoView: View {
// 是否已经登陆
@AppStorage("isLogin") private var isLogin:Bool = false;
// 已经登陆的用户名
@AppStorage("userName") private var userName:String = "";
var body: some View {
VStack{
Text( isLogin ? "欢迎您:\(userName)" : "请登录").font(.title)
}
}
}
struct TodoView_Previews: PreviewProvider {
static var previews: some View {
TodoView()
}
}
总结
1. 本文简单使用了 @AppStorage 包装器实现了登陆状态的保持
2. 并且简单演示了 userName 的缓存
3. 除了登陆保持之外,应当还有登出自动弹出登陆表单功能,下节再探讨
猜你喜欢
- 2025-04-08 不同屏幕分辨率下Winform 主界面处理
- 2025-04-08 综合工具包Telerik UI for WPF发布R2 2016
- 2025-04-08 如何使用FastReport .NET 在 JetBrains Rider 中创建PDF报告?
- 2025-04-08 AnyCAD Rapid .Net三维控件-WinForms集成教程
- 2025-04-08 十年之重修ConcurrentHashMap原理
- 2025-04-08 VBA 常用控件-- 标签控件(Label)(vb标签控件的作用)
- 2025-04-08 C# WinForms 和 LiveCharts 2 创建动态折线图
- 2025-04-08 HTML5教程从入门到精通,随堂笔记(二)H5的form标签
- 2025-04-08 把winForm从Windows平台搬到Linux mint平台
- 2025-04-08 Three主题评论按钮修改为滑动/拉链解锁后自动提交评论?
- 04-29php开发者composer使用看这一篇就够了
- 04-29引用和变量声明在不同语言中的实作
- 04-29PHP 没你想的那么差
- 04-29Ubuntu linux 上的 Nginx 和 Php 安装
- 04-29CentOS下通过yum搭建lnmp(单版本PHP)
- 04-29为什么 PHP8 是个高性能版本
- 04-29PHP8函数包含文件-PHP8知识详解
- 04-29使用无参数函数进行命令执行
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)