【问题标题】:How to use Button SwiftUI correctly?如何正确使用 Button SwiftUI?
【发布时间】:2022-08-20 01:43:50
【问题描述】:

有一个代码,通过按下屏幕底部的“注册”按钮,应该会打开另一个窗口。但是由于某种原因,当您单击按钮时,不会发生任何操作。

单击按钮时,我需要切换视图。

import SwiftUI
import CoreData

struct LoginView: View {
    @State private var email: String = \"Email\"
    @State private var password: String = \"Password\"
    @State private var showSignup: Bool = false
    
    var body: some View {
        ZStack {
            VStack {
                VStack(alignment: .leading) {
                    VStack {
                        LoginText
                        
                        LoginForm
                        
                        GradientButton(text: \"Login\")
                            .frame(maxWidth: .infinity, alignment: .leading)

                        
                        ForgotPass(text: \"Forgor Password\")
                            .frame(maxWidth: .infinity, alignment: .leading)
                    }
                }
                .padding([.top, .horizontal], 40)
                .frame(maxWidth: .infinity, alignment: .leading)
                .offset(y: 104)
                
                VStack {
                    Spacer()
                    Rectangle()
                        .frame(height: 1)
                        .foregroundColor(.secondary.opacity(0.4))
                    
                    VStack {
                        Button( action: {
                            showSignup.toggle()
                        }, label: {
                            ForgotPass(text: \"Sign Up\")
                        })
                    }
                }
            }
            .background(Color.white)
            if showSignup {
                SignupView()
            }
        }
    }
  • 当您初始化注册为 true 时,会发生什么?
  • 这个对我有用。您确定您的其他视图没有与 SignupView 混淆吗?
  • 什么是 LoginText 和 LoginForm ?似乎缺少一些()。还要检查这个post
  • @PtitXav 如果您手动将 false 更改为 true,那么一切正常。但是通过按钮和showSignup.toggle() 不行! Login Text 和 LoginForm 工作,它们是变量。他们一切都很好,没有错误。当我单击按钮时,showSignup.toggle() 不起作用。
  • @HunterLion 如果您启动预览并单击屏幕底部的注册,则没有任何反应,尽管应该出现另一个菜单。

标签: swift button swiftui swift3


【解决方案1】:

它对我有用,没有任何问题。可能与视图层次结构的其他部分有关。我观察到了这种切换的行为,即使它一次对我不起作用,但我确信根本原因只是由于导航和视图层次结构的实现方式。

实际上,您在下面的代码中实现导航应该可以正常工作(在 SignupView 解除期间,showSignup 布尔值始终重置为 false)。

Button(action: {
       showSignup = true
}, label: {
       ForgotPass(text: "Sign Up")
 })

如果您不想使用导航,那么切换应该可以工作。如果切换仍然给您带来问题,那么您也可以试试这个(我试过了,它工作正常)

Button(action: {
       showSignup = !showSignup
}, label: {
       ForgotPass(text: "Sign Up")
})

最后,您仍然面临问题,那么根本原因可能与视图层次结构和导航的其他部分有关。

【讨论】:

    猜你喜欢
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多