Mert Köksal
Mert Köksal

Reputation: 901

Result of 'View' initializer is unused

My Custom button does not tap and passes to next view called AddCreditCardView.

I have tested the button action with print statement and it won't work too.

I copied my code below in separate.

This is my ContentView

import SwiftUI
struct ContentView: View {
    let membershipRows = MembershipData.listData()
    let corporateRows = CorporateData.listData()
    let otherOperationRows = OtherOperationsData.listData()
    @State var selectedCard = CreditCard(id: "", cardOwnerName: "", cardNumber: "", cardExpMonth: "", cardExpYear: "", ccv: "")
    @State var shown: Bool = false
    var body: some View {
        NavigationView {
            VStack {
                List {
                    Section(header: Text("Bireysel")) {
                        ForEach(membershipRows) { row in
                            NavigationLink(destination: CreditCardView()) {
                                RowElementView(row: row)
                            }
                        }
                    }
                    if self.corporateRows.count == 0
                    {
                        Rectangle()
                            .background(Color(.white))
                            .edgesIgnoringSafeArea(.all)
                            .foregroundColor(.white)
                            .padding(.vertical,32)
                    }
                    else {
                        Section(header: Text("Kurumsal")) {
                            ForEach(corporateRows) { row in
                                RowElementView(row: row)
                            }
                        }
                    }
                    Section(header: Text("Diger Islemler")) {
                        ForEach(otherOperationRows) { row in
                            RowElementView(row: row)
                        }
                    }
                    Rectangle()
                        .foregroundColor(.clear)
                        .frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height )
                }
                .navigationBarTitle("Odeme Yontemleri", displayMode: .inline)
                .font(Font.custom("SFCompactDisplay", size: 16))
                Button(action: {
                    AddCreditCardView(item: self.selectedCard)
                }, label: { CustomButton(title: "Odeme Yontemi Ekle", icon: .none, status: .enable)
                })
            }
        }
    }

This is my AddCreditCardView

import SwiftUI

struct AddCreditCardView: View {
    var item: CreditCard
    
    var body: some View {
        NavigationView {
            VStack {
                TopBar()
                Spacer()
                CardInfo()
                Spacer()
            }
            .navigationBarTitle("Odeme Yontemi", displayMode: .inline)
        }
    }
}

struct TopBar : View {
    var body: some View {
        VStack {
            HStack() {
                Image("addcreditcard")
                Image("line")
                Image("locationBar")
                Image("line")
                Image("check-circle")
            }
            .padding(.horizontal,62)
            VStack {
                Text("Kredi Karti Ekle")
                    .font(Font.custom("SFCompactDisplay-Bold", size: 14))
                Text("1. Adim")
                    .font(Font.custom("SFCompactDisplay", size: 14))
                    .fontWeight(.regular)
                    .foregroundColor(.gray)
            }
        }
        .padding()
    }
}

struct CardInfo : View {
    var body: some View {
        VStack {
            CustomTextField(tFtext: "Kartin Uzerindeki Isim", tFImage: "user")
                .textContentType(.givenName)
            CustomTextField(tFtext: "Kredi Kart Numarasi", tFImage: "credit")
                .textContentType(.oneTimeCode)
                .keyboardType(.numberPad)
            HStack {
                CreditCardDateTextField(tFtext: "", tFImage: "date")
                    .textContentType(.creditCardNumber)
                Spacer()
                    Text("|")
                    .foregroundColor(.black)
                    .overlay(
                        Rectangle()
                            .frame(width: 60, height: 53))
                        
                CustomTextField(tFtext: "CCV", tFImage: "")
                    .textContentType(.creditCardNumber)
            }
            .foregroundColor(Color(#colorLiteral(red: 0.9647058824, green: 0.9725490196, blue: 0.9882352941, alpha: 1)))
            CustomTextField(tFtext: "Kart Ismi", tFImage: "cardEdit")
            Spacer()
        }
        
    }
}

And Finally, this is my CreditCard Model

import SwiftUI

struct CreditCard: Identifiable {
    var id: String = UUID().uuidString
    var cardOwnerName : String
    var cardNumber: String
    var cardExpMonth: String
    var cardExpYear: String
    var ccv: String

My error screenshot

Upvotes: 8

Views: 19740

Answers (1)

Mojtaba Hosseini
Mojtaba Hosseini

Reputation: 119108

Seems like you are trying to navigate to AddCreditCardView on the button press. The action closure can not present a view automatically like that! You should change that code to something like this:

    @State var navigated = false

    ,,,

        NavigationLink("AddCreditCardView", destination: AddCreditCardView(), isActive: $navigated)

        Button(action: { self.navigated.toggle() },
               label: { CustomButton(title: "Odeme Yontemi Ekle", icon: .none, status: .enable) })

changing the navigated state will show the next page as it seems you wished.

Upvotes: 9

Related Questions