Разница между toggle () и Toggle - PullRequest
0 голосов
/ 25 мая 2020

Я изучаю модальные окна в SwiftUI, и код ниже:

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()
    }
}

AddView.swift:

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))
        }
    }

Когда я пытаюсь чтобы запустить код в первый раз и проверить вывод print в консоли, логическое значение изменится на true, однако, если я инициализирую @State переменную showingAddUser с помощью true, вывод консоли не изменится, то есть останется true. Не следует ли toggle() переворачивать логическое значение на false?

Этот переключатель toggle() отличается от переключателя Toggle с концептуальной точки зрения?

Ответы [ 2 ]

2 голосов
/ 25 мая 2020

toggle() - это функция изменения типа значения Bool. Если вы установите начальное значение showingAddUser как true, он будет отображать AddUser View при первоначальном запуске, а если он установлен на false, то в этом разница.

Toggle - это SwiftUI View. Его можно использовать как любой другой View в теле SwiftUI, например:

struct ContentView: View {
    @State var bool: Bool
    var body: some View {
        Toggle(isOn: $bool) {
            Text("Hello world!")
        }
    }
}
0 голосов
/ 25 мая 2020

Нет необходимости в логическом значении isPresent в режиме добавления

Попробуйте это

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()
    }
}

AddView.swift

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()
    }
...