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

iOS开发 swift系列---一个视图数据修改后,如何刷新另外一个视图

题目提及的需求源于这样一个场景,我想在B视图修改一个参数,希望在A视图的界面自动刷新并显示修改的结果。这种跨视图的实时更新可能有很多方法解决,本文采用在ContentView 引入一个参数viewmodel ,在B视图修改数据后发送通知,在A视图 onReceive接收通知, 达到修改内容窗口ContentView的成员变量的目的,最终完成A视图界面的刷新。

说明:

 B视图​​​​​​​是一个参数设置界面

A视图是主界面,包含多个ContentView

示例代码

1. 定义通知名称

在你的项目中定义多个通知名称:

import Foundation

extension Notification.Name {
    static let updateTypeText1 = Notification.Name("updateTypeText1")
    static let updateTypeText2 = Notification.Name("updateTypeText2")

}
2. 创建 ContentViewViewModel

创建一个 ContentViewViewModel 来管理 ContentView 的状态:

import Foundation
import Combine

class ContentViewViewModel: ObservableObject {
    @Published var titleText: String = ""

    func setTitleText(_ text: String) {
        titleText = text   //A视图的子窗口ContentView 中需要改变的成员变量
    }

}


3. 修改 ContentView

import SwiftUI

struct ContentView: View {
    @ObservedObject var viewModel: ContentViewViewModel //让 ContentView 使用 @ObservedObject 来观察 ContentViewViewModel

    let titleText : String  //我们想要改变的值,并且希望界面显示修改后的值</


http://www.kler.cn/a/384358.html

相关文章:

  • 数据库管理-第258期 23ai:Oracle Data Redaction(20241104)
  • 秃姐学AI系列之:GRU——门控循环单元 | LSTM——长短期记忆网络
  • A day a tweet(seventeen)——Visualize Convolution Neural Network!
  • 《Vue3 报错》Uncaught TypeError: s.finally is not a function
  • 不愧是阿里巴巴最新开源的Java面试笔记,30万字精华总结 + 面试1300问附答案整理
  • D60【python 接口自动化学习】- python基础之数据库
  • 多机器人图优化:2024ICARA开源
  • 服务器数据恢复—分区结构被破坏的reiserfs文件系统数据恢复案例
  • 火山引擎云服务docker 安装
  • SpringBoot开发——8种读取配置文件信息的方式
  • 基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真
  • 【ArcGISPro】单次将自己建立的工具箱添加至Arcpy中
  • C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
  • MySQL limit offset分页查询可能存在的问题
  • FPGA高速设计之Aurora64B/66B的应用与不足的修正
  • 简单介绍一下mvvm mvc mvp以及区别、历史
  • Recyclerview缓存原理
  • Map函数与vector<pair<int,int>>函数的使用方法
  • 将指令输入环境环境变量,用定义的字符串方便快捷调用
  • SpringBoot框架下的资产管理自动化
  • 【ubuntu18.04】使用U盘制作ubuntu18.04启动盘操作说明
  • Node.js——文件上传
  • Sophos | 网络安全
  • Cesium使用flyToBoundingSphere实现倾斜相机视角观察物体
  • VScode建立Java项目
  • Oracle 11g安装教程