Ios 按按钮时显示新的SwiftUI视图

Ios 按按钮时显示新的SwiftUI视图,ios,swift,swiftui,Ios,Swift,Swiftui,我想在我的应用程序上有一个使用SwiftUI的登录表单。我有两个按钮:登录和注册。我希望能够按下“注册”按钮,并显示/替换另一个新的SwiftUI视图。这是我的按钮代码: 让signupButton=Color(红色:103.0/255.0,绿色:104.0/255.0,蓝色:255.0/255.0) 让文本:字符串 var body:一些观点{ 按钮(操作:{ }) { 文本(文本) .accentColor(.白色) //.帧(最小宽度:0,最大宽度:300) .框架(宽度:200) .pa

我想在我的应用程序上有一个使用SwiftUI的登录表单。我有两个按钮:登录和注册。我希望能够按下“注册”按钮,并显示/替换另一个新的SwiftUI视图。这是我的按钮代码:

让signupButton=Color(红色:103.0/255.0,绿色:104.0/255.0,蓝色:255.0/255.0)
让文本:字符串
var body:一些观点{
按钮(操作:{
}) {
文本(文本)
.accentColor(.白色)
//.帧(最小宽度:0,最大宽度:300)
.框架(宽度:200)
.padding()
.背景(签名按钮)
.转弯半径(10)
.padding()
}
}
}
然后,对于我的登录页面:

struct LoginPage:View{
让appVersion=Bundle.main.infoDictionary?[“CbundleShortVersionString”]作为?字符串
设textFieldBackground=Color(红色:240.0/255.0,绿色:240.0/255.0,蓝色:240.0/255.0)
设textFieldBorder=Color(红色:112.0/255.0,绿色:112.0/255.0,蓝色:112.0/255.0)
设signupButton=Color(红色:103.0/255.0,绿色:104.0/255.0,蓝色:255.0/255.0)
var body:一些观点{
导航视图{
文本(“没有帐户吗?”)
.fontWeight(.light)
NavigationLink(目标:SignupPage()){
操作按钮(文本:“注册”)
}
}
.navigationBarTitle(文本(“签名”)
.foregroundColor(颜色为黑色))
}
}
}

问题是,当我按下按钮时,注册页面没有显示。我已经设计了一个名为
SignupPage()
的页面,参考文献是正确的。我不知道这是否是一个bug,或者我只是做错了

NavigationLink
已经作为一个按钮,您不需要使用
按钮
。如果您这样做了,您需要为它定义一个操作。这里有一个解决方案:

struct LoginPage:View{
让appVersion=Bundle.main.infoDictionary?[“CbundleShortVersionString”]作为?字符串
设textFieldBackground=Color(红色:240.0/255.0,绿色:240.0/255.0,蓝色:240.0/255.0)
设textFieldBorder=Color(红色:112.0/255.0,绿色:112.0/255.0,蓝色:112.0/255.0)
设signupButton=Color(红色:103.0/255.0,绿色:104.0/255.0,蓝色:255.0/255.0)
var body:一些观点{
导航视图{
VStack{
文本(“没有帐户吗?”)
.fontWeight(.light)
NavigationLink(目标:SignupPage()){
操作按钮(文本:“注册”)
}
}
}
.navigationBarTitle(文本(“签名”)
.foregroundColor(颜色为黑色))
}
}
结构SignupPage:视图{
var body:一些观点{
文本(“注册页占位符”)
}
}
结构操作按钮:视图{
设signupButton=Color(红色:103.0/255.0,绿色:104.0/255.0,蓝色:255.0/255.0)
让文本:字符串
var body:一些观点{
文本(文本)
.accentColor(.白色)
//.帧(最小宽度:0,最大宽度:300)
.框架(宽度:200)
.padding()
.背景(签名按钮)
.转弯半径(10)
.padding()
}
}

如果在导航到另一个视图之前需要使用按钮并有某种行为,则可以使用以下代码:

struct FooView: View {
     @State private var presentView = false

     var body: some View {
         NavigationLink(destination: AnotherView(), isActive: self.$presentView) {
             Button(action: {
                 //do something here
                 self.presentView = true
             }) {
                 Text("Navigate!")
                     .frame(width: 100, height: 200)
             }
         }
     }
}

下次发布代码时,请确保格式正确。有几个错误,包括我认为是您的
ActionButton
视图中缺少一行,以及不平衡的括号。您可以使用按钮,但您需要在导航链接上绑定一个bool,当您单击其操作上的按钮时,您将此变量设置为true;