Swift toggle()和toggle()之间的区别

Swift toggle()和toggle()之间的区别,swift,swiftui,Swift,Swiftui,我正在学习SwiftUI中的Modals,代码如下: ContentView.swift: import SwiftUI struct ContentView: View { @State private var showingAddUser = false var body: some View { return VStack { Text("Modal View") }.onTapGesture { s

我正在学习SwiftUI中的Modals,代码如下:

ContentView.swift:

import SwiftUI

struct ContentView: View {
    @State private var showingAddUser = false
    var body: some View {
      return  VStack {
        Text("Modal View")

        }.onTapGesture {
            self.showingAddUser.toggle()
            print(self.showingAddUser) //for console
        }

        .sheet(isPresented: $showingAddUser) {
            Addview(isPresented: self.$showingAddUser)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
import SwiftUI

    struct Addview: View {
        @Binding var isPresented: Bool
        var body: some View {
            Button("Dismiss") {
                       self.isPresented = false
                   }
        }
    }

    struct Addview_Previews: PreviewProvider {
        static var previews: some View {
            Addview(isPresented: .constant(false))
        }
    }
AddView.swift:

import SwiftUI

struct ContentView: View {
    @State private var showingAddUser = false
    var body: some View {
      return  VStack {
        Text("Modal View")

        }.onTapGesture {
            self.showingAddUser.toggle()
            print(self.showingAddUser) //for console
        }

        .sheet(isPresented: $showingAddUser) {
            Addview(isPresented: self.$showingAddUser)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
import SwiftUI

    struct Addview: View {
        @Binding var isPresented: Bool
        var body: some View {
            Button("Dismiss") {
                       self.isPresented = false
                   }
        }
    }

    struct Addview_Previews: PreviewProvider {
        static var previews: some View {
            Addview(isPresented: .constant(false))
        }
    }
当我第一次尝试运行代码并检查控制台中的
打印
输出时,布尔值更改为
,但是如果我使用
初始化
@State
变量
showingAddUser
,控制台输出将保持不变,即保持
。不应该
toggle()
将布尔值翻转为
false

从概念的角度来看,这个
toggle()
toggle
开关不同吗

toggle()是值类型
Bool
上的一个变异函数。如果将
showingAddUser
的初始值设置为
true
,则初始启动时将显示
AddUser
视图,如果设置为
false
,则不会显示该视图,这就是区别所在

切换
是一个快捷的UI视图。它可以用作SwiftUI body中的任何其他视图,如下所示:

struct ContentView:View{
@状态变量bool:bool
var body:一些观点{
切换(isOn:$bool){
文本(“你好,世界!”)
}
}
}
切换()是值类型
Bool
上的一个变异函数。如果将
showingAddUser
的初始值设置为
true
,则初始启动时将显示
AddUser
视图,如果设置为
false
,则不会显示该视图,这就是区别所在

切换
是一个快捷的UI视图。它可以用作SwiftUI body中的任何其他视图,如下所示:

struct ContentView:View{
@状态变量bool:bool
var body:一些观点{
切换(isOn:$bool){
文本(“你好,世界!”)
}
}
}
添加视图中不需要isPresented Boolean

试试这个

ContentView.swift

import SwiftUI

struct ContentView: View {
       @State private var showingAddUser = false
       var body: some View {
       return  VStack {
               Text("Modal View")

       }.onTapGesture {
              self.showingAddUser = true
              print(self.showingAddUser) //for console
       }

       .sheet(isPresented: $showingAddUser) {
             Addview()
       }
    }
 }

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
import SwiftUI
struct AddView: View {

    var body: some View {
        Button(action:
             // Do Your Things
        ) {
            Text("MyButton")
        }
    }
}

struct Addview_Previews: PreviewProvider {
    static var previews: some View {
        Addview()
    }
AddView.swift

import SwiftUI

struct ContentView: View {
       @State private var showingAddUser = false
       var body: some View {
       return  VStack {
               Text("Modal View")

       }.onTapGesture {
              self.showingAddUser = true
              print(self.showingAddUser) //for console
       }

       .sheet(isPresented: $showingAddUser) {
             Addview()
       }
    }
 }

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
import SwiftUI
struct AddView: View {

    var body: some View {
        Button(action:
             // Do Your Things
        ) {
            Text("MyButton")
        }
    }
}

struct Addview_Previews: PreviewProvider {
    static var previews: some View {
        Addview()
    }
添加视图中不需要isPresented Boolean

试试这个

ContentView.swift

import SwiftUI

struct ContentView: View {
       @State private var showingAddUser = false
       var body: some View {
       return  VStack {
               Text("Modal View")

       }.onTapGesture {
              self.showingAddUser = true
              print(self.showingAddUser) //for console
       }

       .sheet(isPresented: $showingAddUser) {
             Addview()
       }
    }
 }

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
import SwiftUI
struct AddView: View {

    var body: some View {
        Button(action:
             // Do Your Things
        ) {
            Text("MyButton")
        }
    }
}

struct Addview_Previews: PreviewProvider {
    static var previews: some View {
        Addview()
    }
AddView.swift

import SwiftUI

struct ContentView: View {
       @State private var showingAddUser = false
       var body: some View {
       return  VStack {
               Text("Modal View")

       }.onTapGesture {
              self.showingAddUser = true
              print(self.showingAddUser) //for console
       }

       .sheet(isPresented: $showingAddUser) {
             Addview()
       }
    }
 }

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
import SwiftUI
struct AddView: View {

    var body: some View {
        Button(action:
             // Do Your Things
        ) {
            Text("MyButton")
        }
    }
}

struct Addview_Previews: PreviewProvider {
    static var previews: some View {
        Addview()
    }

Toggle()用于更改状态,如显示和隐藏密码。在这种情况下,如果要显示另一个视图,则不需要使用Toggle。下一次,它将自动为其指定假值。不需要切换()切换()用于更改状态,如显示和隐藏密码。在这种情况下,如果要显示另一个视图,则不需要使用切换。下一次,它将自动为其指定假值。无需切换()存在带有
切换
和属性属性(
@State
)的Swift错误。它将与标准
self.showingAddUser=一起工作!self.showingAddUser
。存在一个带有
切换
和属性属性(
@State
)的Swift错误。它将与标准
self.showingAddUser=一起工作!self.showingAddUser