菜鸟教程小白 发表于 2022-12-13 05:39:33

ios - 在 SwiftUI 中单击按钮时的 NavigationView 和 NavigationLink?


                                            <p><p>我正在尝试从登录 View 推送到详细 View ,但无法成功。即使导航栏未显示在登录 View 中。如何在 SwiftUI 中按下按钮?如何在按钮点击时使用 NavigationLink?</p>
<pre><code>var body: some View {
   
    NavigationView {
      VStack(alignment: .leading) {
            Text(&#34;Let&#39;s get you signed in.&#34;)
                .bold()
                .font(.system(size: 40))
                .multilineTextAlignment(.leading)
                .frame(width: 300, height: 100, alignment: .topLeading)
                .padding(Edge.Set.bottom, 50)
            
            Text(&#34;Email address:&#34;)
                .font(.headline)
            TextField(&#34;Email&#34;, text: $email)
                .frame(height:44)
                .accentColor(Color.white)
                .background(Color(UIColor.darkGray))
                .cornerRadius(4.0)
            
            Text(&#34;Password:&#34;)
                .font(.headline)
            
            SecureField(&#34;Password&#34;, text: $password)
                .frame(height:44)
                .accentColor(Color.white)
                .background(Color(UIColor.darkGray))
                .cornerRadius(4.0)
            
            Button(action: {
                print(&#34;login tapped&#34;)
            }) {
                HStack {
                  Spacer()
                  Text(&#34;Login&#34;).foregroundColor(Color.white).bold()
                  Spacer()
                }
            }
            .accentColor(Color.black)
            .padding()
            .background(Color(UIColor.darkGray))
            .cornerRadius(4.0)
            .padding(Edge.Set.vertical, 20)
      }
      .padding(.horizontal,30)
    }
    .navigationBarTitle(Text(&#34;Login&#34;))
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>要解决您的问题,您需要使用 <code>NavigationLink</code> 绑定(bind)和管理标签,因此在您的 View 中创建一个状态如下,只需添加上面的正文。</p>

<pre><code>@State var selection: Int? = nil
</code></pre>

<p>然后更新您的按钮代码如下添加 <code>NavigationLink</code></p>

<pre><code>NavigationLink(destination: Text(&#34;Test&#34;), tag: 1, selection: $selection) {
    Button(action: {
      print(&#34;login tapped&#34;)
      self.selection = 1
    }) {
      HStack {
            Spacer()
            Text(&#34;Login&#34;).foregroundColor(Color.white).bold()
            Spacer()
      }
    }
    .accentColor(Color.black)
    .padding()
    .background(Color(UIColor.darkGray))
    .cornerRadius(4.0)
    .padding(Edge.Set.vertical, 20)
}
</code></pre>

<p>Meaning is, when selection and <code>NavigationLink</code> tag value will match then navigation will be occurs.</p>

<p>希望对你有帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 SwiftUI 中单击按钮时的 NavigationView 和 NavigationLink?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/57799548/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/57799548/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 SwiftUI 中单击按钮时的 NavigationView 和 NavigationLink?