SwiftUI一些注意点和技巧
00 分钟
2024-12-10
2025-1-11
Last edited time
Jan 11, 2025 02:36 AM
type
status
date
slug
summary
tags
category
icon
password

Q1: 如果遇到在别的地方需要修改swiftui界面时,但又无法直接操作页面内的数据时,该怎么办呢?

方法一:

使用 @Published 和 ObservableObject
通过 ObservableObject 和 @Published 将状态管理抽离到一个外部的共享数据模型中,然后通过 @EnvironmentObject 或 @StateObject 将数据绑定到页面。
示例代码
1. 定义状态管理类
2. 在视图中使用 @StateObject 或 @EnvironmentObject
3. 在其他地方更新数据
当 sharedData.message 或 sharedData.count 被修改时,ContentView 会自动更新。

方法二

使用NotificationCenter.default.post,这个方法基本无敌,可以在任何地方使用,不局限于swiftui页面。
示例代码
1. 定义通知的名称
2. 在某处发送通知
3. 在 SwiftUI 页面接收通知
  • 通过onReceive接受
  • 通过.sink自己控制监听
💡
注意这种方式需要自己取消监听

Q2: 有时候遇到页面崩溃出现黄色感叹号的情况,但一时找不到逻辑原因?

可以留心观察你的代码结构。
一定要注意如果使用NavigationStack的话,navigationDestinationnavigationTitle一定要在NavigationStack内部。

Q3: 当应用从后台进入前台的时候,默认是不会触发当前页面的.onAppear或者.task事件的,此时如果想要每次进入前台的时候都触发数据更新该怎么办?

可以在对应页面订阅进入前台事件,具体代码如下:
也可以通过onChange监听设备场景
上一篇
Swift配合FastAPI以及NextJS做扫码登录
下一篇
shadcn ui框架使用的注意点

评论
Loading...