Swiftui 如何在选项卡视图中使用公共变量?
我目前正在使用SwiftUI开发一个应用程序 此应用程序有3个结构Swiftui 如何在选项卡视图中使用公共变量?,swiftui,Swiftui,我目前正在使用SwiftUI开发一个应用程序 此应用程序有3个结构 ①内容视图 ②第一视图 ③第二视图 这三个结构在选项卡视图中进行页面转换 这个应用程序有一个常见的变量类型Bool,使用observeObjectAnnotation 我想在FirstView和SecondView中更改为显示和消失文本视图,这取决于变量的条件,但FirstView没有像我预期的那样更改视图 我怎样才能解决这个问题 代码如下: ContentView.swift import SwiftUI struc
- ①内容视图
- ②第一视图
- ③第二视图
我想在FirstView和SecondView中更改为显示和消失文本视图,这取决于变量的条件,但FirstView没有像我预期的那样更改视图 我怎样才能解决这个问题
代码如下: ContentView.swift
import SwiftUI
struct ContentView: View {
var body: some View {
TabView {
FirstView()
.tabItem {
Text("First")
}.tag(1)
SecondView()
.tabItem {
Text("Second")
}.tag(2)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import SwiftUI
struct FirstView: View {
@ObservedObject var firstCheck: ViewModel = ViewModel()
var body: some View {
VStack{
if firstCheck.check == true{
Text("checked")
}
}
}
}
struct FirstView_Previews: PreviewProvider {
static var previews: some View {
FirstView()
}
}
import SwiftUI
struct SecondView: View {
@ObservedObject var secondCheck = ViewModel()
var body: some View {
VStack{
Toggle(
isOn: $secondCheck.check
){
Text("change")
}
if self.secondCheck.check == true{
Text("checked")
}
}
}
}
struct SecondView_Previews: PreviewProvider {
static var previews: some View {
SecondView()
}
}
斯威夫特
import SwiftUI
struct ContentView: View {
var body: some View {
TabView {
FirstView()
.tabItem {
Text("First")
}.tag(1)
SecondView()
.tabItem {
Text("Second")
}.tag(2)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import SwiftUI
struct FirstView: View {
@ObservedObject var firstCheck: ViewModel = ViewModel()
var body: some View {
VStack{
if firstCheck.check == true{
Text("checked")
}
}
}
}
struct FirstView_Previews: PreviewProvider {
static var previews: some View {
FirstView()
}
}
import SwiftUI
struct SecondView: View {
@ObservedObject var secondCheck = ViewModel()
var body: some View {
VStack{
Toggle(
isOn: $secondCheck.check
){
Text("change")
}
if self.secondCheck.check == true{
Text("checked")
}
}
}
}
struct SecondView_Previews: PreviewProvider {
static var previews: some View {
SecondView()
}
}
斯威夫特酒店
import SwiftUI
struct ContentView: View {
var body: some View {
TabView {
FirstView()
.tabItem {
Text("First")
}.tag(1)
SecondView()
.tabItem {
Text("Second")
}.tag(2)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import SwiftUI
struct FirstView: View {
@ObservedObject var firstCheck: ViewModel = ViewModel()
var body: some View {
VStack{
if firstCheck.check == true{
Text("checked")
}
}
}
}
struct FirstView_Previews: PreviewProvider {
static var previews: some View {
FirstView()
}
}
import SwiftUI
struct SecondView: View {
@ObservedObject var secondCheck = ViewModel()
var body: some View {
VStack{
Toggle(
isOn: $secondCheck.check
){
Text("change")
}
if self.secondCheck.check == true{
Text("checked")
}
}
}
}
struct SecondView_Previews: PreviewProvider {
static var previews: some View {
SecondView()
}
}
ViewModel.swift
import Foundation
final class ViewModel: ObservableObject {
@Published var check: Bool = false
}
Xcode:Version11.7将对象保留在一个位置,可以是父视图
struct ContentView: View {
@ObservedObject var viewModel = ViewModel()
// @StateObject var viewModel = ViewModel() // SwiftUI 2.0
var body: some View {
TabView {
// .. other code here
}
.environmentObject(viewModel) // << inject here
}
}
谢谢你的帮助,现在代码运行得和我预期的一样好!