How to pass the value qLeft from ContentView() to structQuestions and then use the actual answer variable in Play().
//
// ContentView.swift
// Tables
//
// Created by Shaik Arham on 01/08/21.
//
import SwiftUI
struct navModifier: ViewModifier {
func body(content: Content)-> some View {
content
.foregroundColor(.white)
.font(.custom("Helvetica",size: 40) .weight(.bold))
.shadow(color: .green, radius: 3, x: 2, y: 1)
.padding(EdgeInsets(top: 10, leading: 10, bottom: 0, trailing: 0))
}
}
extension View {
func navMod() -> some View {
self.modifier(navModifier())
}
}
struct Questions {
var questionLeft: Int
let questionRight = Int.random(in: 1...12)
var actualAns = 0
init(questionLeft: Int){
actualAns = questionLeft * questionRight
self.questionLeft = questionLeft
}
}
struct ContentView: View {
@State private var noQ = ["1", "5", "10", "all"]
@State private var userQ = 0
@State var qLeft = Questions(questionLeft: 0)
@State var passV = 1
var body: some View {
NavigationView {
ZStack {
LinearGradient(gradient: Gradient(colors: [Color.yellow, Color.red]), startPoint: .topTrailing, endPoint: .bottomTrailing)
.edgesIgnoringSafeArea(.all)
VStack {
Text("Settings")
.frame(maxWidth: .infinity, alignment: .leading)
.padding(EdgeInsets(top: -20, leading: 20, bottom: 0, trailing: 0))
.font(.system(size: 30, weight: .semibold, design: .rounded))
Section(header: Text("Which table you wanna practice?")) {
Picker("Select Table", selection: $qLeft.questionLeft) {
ForEach(1 ..< 13) {
Text("\($0) Table")
}
}
.padding(EdgeInsets(top: -50, leading: 0, bottom: 0, trailing: 0))
}
.padding(EdgeInsets(top: 20, leading: 10, bottom: 0, trailing: 0))
.frame(maxWidth: .infinity, alignment: .leading)
Section(header: Text("How many questions do you want to answer ?")) {
Picker(selection: $userQ, label: Text("Select Questions")){
ForEach(noQ, id: \.self){
Text($0)
}
}
.padding(EdgeInsets(top: -60, leading: 0, bottom: 0, trailing: 0))
}
.padding(EdgeInsets(top: 20, leading: 10, bottom: 0, trailing: 0))
.frame(maxWidth: .infinity, alignment: .leading)
Section {
NavigationLink("Click to Begin",destination: Play(qLeft: $qLeft.questionLeft))
.font(.system(size: 30, weight: .bold, design: .monospaced))
.foregroundColor(.white)
}
Spacer()
}
}.toolbar {
ToolbarItemGroup(placement: .navigation){
Text("Tables App")
.navMod()
}
}
}
}
}
struct Play: View {
@Binding var qLeft: Int
@State var questionLef = Questions(questionLeft: 0)
var body: some View {
VStack {
Text("\(questionLef.questionLeft) * \(questionLef.questionRight)")
Text("\(questionLef.actualAns)")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct Play_Previews: PreviewProvider {
@State static var qLeft1 = 0
static var previews: some View {
Play(qLeft: $qLeft1)
}
}