Search code examples
iosswiftswiftuiswiftui-navigationlinkswiftui-navigationview

How do I navigate to my SecondView by tapping image button?


I'm trying out NavigationView and want to move to SecondView on clicking radio-on-button. The code works fine if I'm using text button, I need to use an icon/image though and it doesn't work in that case. What am I missing?

import SwiftUI

struct FirstView: View {
    var body: some View {
        NavigationView {
                   VStack {
                       Text("Main Content View")
                           .font(.largeTitle)
                           .fontWeight(.medium)
                  strong text         .foregroundColor(Color.blue)
                       Spacer()
                       NavigationLink(destination: SecondView(), label: {
                           Button(action: {
                               
                           }) {
                               
                               Image("radio-on-button")
                                   .renderingMode(.original)
                                   .resizable()
                                   .frame(width: 75, height: 75)
                                   .foregroundColor(.red)
                                   .padding(.horizontal)
                               
                           }
                       }) 
                 }
               }
    }
}

struct SecondView: View {
    var body: some View {
        Text("Hello, Second View!")
                    .font(.largeTitle)
                    .fontWeight(.medium)
                    .foregroundColor(Color.blue)
    }
}

Solution

  • When you want to navigate, you simply use NavigationLink without a Button:

    NavigationLink(destination: SecondView(), label: {
        Image("radio-on-button")
            .renderingMode(.original)
            .resizable()
            .frame(width: 75, height: 75)
            .foregroundColor(.red)
            .padding(.horizontal)
    })
    

    Button is used to execute some action.