如何在fragment中点击按钮切换到另一个fragment中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在fragment中点击按钮切换到另一个fragment中相关的知识,希望对你有一定的参考价值。

在一个fragment中 切换到另外一个fragment 如果是同一个Activity中, 那么直接在Activity中写个切换的方法, 然后在Fragment调用 getActivity() 来得到这个Activity再调用它的切换方法即可 参考技术A ? 名家点评? 国际评价

如何在 SwiftUI 中以编程方式切换到另一个视图(无需按下按钮)

【中文标题】如何在 SwiftUI 中以编程方式切换到另一个视图(无需按下按钮)【英文标题】:How to switch to another view programmatically in SwiftUI (without a button press) 【发布时间】:2020-06-12 16:35:56 【问题描述】:

我在不按 SwiftUI 应用程序中的按钮的情况下切换到另一个视图时遇到问题。 我可以举很多例子来说明我想做的事情: 1-想象一个登录表单,我们需要填写 2 个文本字段:用户名和密码。当完美匹配时,我们会自动进行身份验证。 2-现在以我为例。我有这样的看法:

我想要做什么:当我在列表中选择一行时(例如 Lyon-Perrache TGV)并且如果两个文本字段不为空 => 我被重定向到另一个视图。

有很多例子可以知道如何从另一个视图移动到一个视图,但总是通过一个按钮单击..(使用 NavigationLink) 当我从列表中选择目标文本字段时,我需要准确地以编程方式完成这两个文本字段。

这是我的代码的一部分:

import SwiftUI



struct Search: View 



 @ObservedObject var webservice = Webservice()

 @State var Depart: String = ""

 @State var Destination: String = ""

 @State var listStation = [Station]()

 @State var predictedValues: Array<String> = []

 @State var isBeingEditedDeparture: Bool = false

 @State var isBeingEditedDestination: Bool = false

 @State var hey: Bool  = false

 @State var activate: Bool  = false



init() 

      UITableView.appearance().showsVerticalScrollIndicator = false

      UITableView.appearance().backgroundColor = .clear

      UITableViewCell.appearance().backgroundColor = .clear

      //UITableView.appearance().separatorColor = .clear

  



var body: some View 





    VStack(alignment: .leading)



        PredictingTextField(listStation: self.$listStation , predictedValues: self.$predictedValues, 
        Depart: self.$Depart, Destination: self.$Destination, isBeingEditedDeparture: 
        self.$isBeingEditedDeparture, isBeingEditedDestination: self.$isBeingEditedDestination )



            .textFieldStyle(RoundedBorderTextFieldStyle())



        List() 

            ForEach(self.predictedValues, id: \.self) value in



                Text(value)

                    .onTapGesture 

                        if(self.isBeingEditedDeparture == true)

                        

                            self.Depart = value

                        

                        else

                            self.Destination = value
                            self.activate = true

                        

                

            

        .padding(.top, 10)



    


我已经声明了一个名为“activate”的变量作为移动到新视图的触发点。 当我们在列表中为“destination”文本字段选择一行时,它等于 true。

我该怎么做才能走得更远?

提前谢谢你!

【问题讨论】:

【参考方案1】:

您可以将NavigationLinkisActive 参数一起使用。当您将此参数设置为true 时,它将显示NewView

@State var activated: Bool = false
NavigationLink(destination: NewView(), isActive: $activated) 
    EmptyView()

然后您需要将您的NavigationLink 放入NavigationView 以使其工作。

【讨论】:

你能告诉我在上面的代码中把 NavigationLink 放在哪里吗? ty 几乎在正文中允许查看的任何地方(例如,在VStack 中)。 NavigationLink 将是不可见的(因为它的主体是 EmptyView)并且不会影响您的其他视图。 哦,对不起,我忘了。它必须在NavigationView

以上是关于如何在fragment中点击按钮切换到另一个fragment中的主要内容,如果未能解决你的问题,请参考以下文章

Fragment和DialogFragment生命周期关系

Android:多个Fragment切换问题/切换动画设置

fragment与activity及两个fragment之间的跳转实现

使用导航架构操作点击返回按钮时如何避免片段重新创建?

WPF主窗口按下按钮,关闭当前窗口,切换到另一窗口

Fragment 回退栈 传递参数,点击切换图片使用Fragment ListView