网站首页 > 技术文章 正文
置顶
菜鸟入门,各位大佬轻喷,如有谬误之处欢迎讨论建议,也欢迎各位道友与我同行
“不积跬步,无以至千里;不积小流,无以成江海”
继续
上文中已经实现在设置界面中有一个退出按钮,点击后将弹出登陆弹框
并且退出app后登陆状态也同步消失
那么本文进入TODO页面本身的编写,效果如下:
在这里插入图片描述
实现
TODO List 的基本逻辑:
- 首先有一个数组,里面存储的是所有的todo内容
- 然后用一个List循环这个数组,每一条todo上应有删除的功能
- 顶部应该有一个输入框,可以新增todo,应有一个确认按钮 ( 这些就是之前绑定的内容了 )
实现的代码如下:
import SwiftUI
struct TodoView: View {
// 是否已经登陆
@AppStorage("isLogin") private var isLogin:Bool = false;
// 已经登陆的用户名
@AppStorage("userName") private var userName:String = "";
// todoList 数组,里面是一个字符串
@State private var todoLists:[String] = ["TODO第一条","TODO第二条"];
// 输入框输入的新的TODO
@State private var newItem:String = "";
// 向 todolist 添加一条,并清空填写的todo内容
func addOne(){
// 如果没有填写则退出,避免加一些空的数据上去
if(newItem == ""){
return ;
}
todoLists.append(newItem);
newItem = "";
}
// 从 todolist 里面删除指定的一条
func deleteOne(index:Int){
todoLists.remove(at: index);
}
var body: some View {
VStack{
HStack{
TextField("请输入新的TODO",text:$newItem).onSubmit {
addOne()
}
Button("确认"){
addOne()
}
}.padding()
List{
// Foreach 开始循环 TodoLists 的indices,需要它的索引值,用于删除等
// id 需要为一个 Identifier,可以预见,之后我们自己构造数据类型的时候也需要一个 Identifier
ForEach(todoLists.indices ,id: \.self ){ i in
HStack{
// 字符串拼接,之前已有使用
Text("第\(i+1)条:\(todoLists[i])")
Spacer()
// 删除图标,点击后删除本项
Image(systemName: "trash").onTapGesture {
deleteOne(index: i)
}
}
}
}
}
}
}
struct TodoView_Previews: PreviewProvider {
static var previews: some View {
TodoView()
}
}
具体实现方式的解析如代码中的注释。
总结
- List 下的 Foreach 相当于 vue 中的 v-for="(item,index) in todoLists"
- Methods 可以直接写在 结构体中,变量也可以直接使用,这与 vue3 的 setup script 比较类似
- onClick 事件,改为了 onTapGesture 事件。
猜你喜欢
- 2024-09-29 手帐中的“TO DO LIST”,帮你做好每日管理
- 2024-09-29 TO DO LIST(TODOLiST是什么意思)
- 2024-09-29 工作中使用任务清单(To Do List)的4个益处
- 2024-09-29 China’s Leading Chipmaker AMEC Says its Inclusion onto CMC List Unreasonable
- 2024-09-29 春日To-Do List:去看一场有形有声的展览
- 2024-09-29 iOS限免App精选:Sure - 会定位可加密的To-Do(¥6→0)
- 2024-09-29 安卓待办清单,任务管理工具:To-do-List v1.01.99.0705 高级版
- 2024-09-29 详解Linux中的expect用法--实现shell脚本自动交互
- 2024-09-29 实测:微软出的免费待办 App,到底有多智能?
- 2024-09-29 写下来更易于执行!to do list!(写下来更易于执行!to+do+list!如何解决)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)