【问题标题】:How to call swiftui struct from function如何从函数中调用 swiftui struct
【发布时间】:2020-02-14 11:23:15
【问题描述】:

HomeView() 结构无法调用函数或按钮操作。我应该如何从另一个结构调用 HomeView() 结构。在按钮操作或 LoginView() 函数中调用 HomeView() 时,我得到“'HomeView' 初始化程序的结果未使用”

struct LoginView: View
{
    var body: some View
    {
    }
    func login()
    {
        HomeView() //Result of 'HomeView' initializer is unused "WARNING"
    }
}



struct LoginView: View
{
    var body: some View {
        NavigationView {
            VStack
                {
                    Button(action: {
                        HomeView() //Result of 'HomeView' initializer is unused  "WARNING"
                    })
                    {
                        HStack(alignment: .center) {
                            Spacer()
                            Text("Submit")
                        }
                    }
            }
        }
    }
}



struct HomeView: View
{
    var body: some View
    {
    }
    func submit()
    {
    }
}

【问题讨论】:

  • HomeView() 不是函数,它是值的构造函数,如let view = HomeView()
  • “调用结构”是什么意思?你不调用结构。你创建它们,改变它们并复制它们,但我不知道你调用结构是什么意思。
  • @DamiaanDufaux,我更新了我的帖子

标签: ios uinavigationcontroller swiftui


【解决方案1】:

要通过按钮显示另一个视图,请检查以下内容:

struct LoginView: View {
    @State var showingHome = false
    var loginButton: some View {
        Button(action: {
            self.showingHome.toggle()
        }) {
            Text("Login")
            .foregroundColor(Color.init(.white))
            .font(.system(size: 14))
            .frame(minWidth: 0, maxWidth: .infinity)
            .padding()
            .background(Color.init(.systemOrange))
            .cornerRadius(4)
        }
    }

    var body: some View {
        NavigationView {
            VStack{
                loginButton.sheet(isPresented: $showingHome) {
                    HomeView()
                }
            }
        }
    }
}

【讨论】:

  • 如果我们使用工作表呈现,用户可以关闭。我想在 swiftui 视图之间导航
  • AnyView({ () -> AnyView in if 用户登录 { return AnyView(HomeView()) } else { return AnyView(LoginView()) } }
  • 用户登录或已经登录后,将呈现 HomeView(),否则呈现 LoginView()。如果这是你想要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
相关资源
最近更新 更多