自学内容网 自学内容网

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  //我们想要改变的值,并且希望界面显示修改后的值</


原文地址:https://blog.csdn.net/hxx221/article/details/143604458

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!