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)
}
}
4
Answers
When you want to navigate, you simply use
NavigationLink
without aButton
:Button
is used to execute some action.Use following code to solve. No need to use
Button
forNavigationLink
label only useImage
as aNavigationLink
Label.In order to fix issue you need to bind and manage tag with NavigationLink, So create one state variable inside you view as follow, just add above body.
Then update your button code as follow to add NavigationLink
I hope this will solve your problem. If not feel free to discuss. Thanks
Here is the full code:
A navigation Link acts like a button, so you can style it just like one. I tested the code out by myself, and it works. Think of the label part as just like another sub-view. This way, you can put as much stuff that you would like in it, and whenever the user taps on anything inside of that "subview" the second view will come up.