在 SwiftUI 中使用可观察对象切换视图

编程入门 行业动态 更新时间:2024-10-16 22:23:36
本文介绍了在 SwiftUI 中使用可观察对象切换视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在练习尝试使用 SwiftUI 中的可观察对象切换视图,但我的代码不起作用.我知道我可以用@State 做到这一点,但我想让它与可观察对象一起工作.当我在内容视图中单击图像时,图像不会改变.有人可以帮我吗?

I am practicing trying to switch views using observable objects in SwiftUI, but my code isn't working. I know I can do this with @State, but I would like to get this working with observable objects. When I click on the image in the content view, the image doesn't change. Can someone help me?

ContentView.swift

import SwiftUI struct ContentView: View { @ObservedObject var viewRouter: ViewRouter var body: some View { VStack { Button(action: {self.viewRouter.currentPage = "Page2"}) { Image(viewRouter.currentPage) } if viewRouter.currentPage == "Page1" { Page1(viewRouter: viewRouter) }else if viewRouter.currentPage == "Page2" { Page2(viewRouter: viewRouter) } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView(viewRouter: ViewRouter()) } }

ViewRouter.swift

import Foundation import SwiftUI import Combine class ViewRouter: ObservableObject { let objectWillChange = PassthroughSubject<ViewRouter, Never>() @Published var currentPage: String = "Page1" }

Page1.swift

import SwiftUI struct Page1: View { @ObservedObject var viewRouter:ViewRouter var body: some View { VStack { Image("ET-LondonBridge") } } } struct Page1_Previews: PreviewProvider { static var previews: some View { Page1(viewRouter: ViewRouter()) } }

Page2.swift

import SwiftUI struct Page2: View { @ObservedObject var viewRouter:ViewRouter var body: some View { VStack { Image("BigBen") .aspectRatio(contentMode: .fit) } } } struct Page2_Previews: PreviewProvider { static var previews: some View { Page2(viewRouter: ViewRouter()) } }

推荐答案

你不需要这条线就可以让所有事情正常进行.只需注释掉这一行

You don't need this line to make all things work. Just comment out this line

//let objectWillChange = PassthroughSubject<ViewRouter, Never>()

更多推荐

在 SwiftUI 中使用可观察对象切换视图

本文发布于:2023-11-13 02:20:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1583149.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:视图   对象   SwiftUI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!