1
votes

I am having one view above that I have overlay which is having some rows, I want to write some logic where i need to get index for each row from ovelayview to main view, but I am not sure how to pass latest passengerID from Overlay to main view (AbcView) Is there anything using I can pass latest index?

Code is below

Main View

import SwiftUI

struct AbcView: View {

    @StateObject var abcViewModel: AbcViewModel
    @State private var selectedPassengerId: Int?

    init(accessibiltyID: String, abcViewModel: AbcViewModel) {
        self._abcViewModel = StateObject(wrappedValue: abcViewModel)
    }

    var body: some View {
        VStack(spacing: 0) {
            // Some Design
        }
        .overlay(
           TopView((accessibilityID: accessibilityID, content: TopSheetClassViews(abcViewModel: abcViewModel), selectedRowID: $selectedPassengerId, rowHeight: $rowHeight),, alignment: .top
        )
    }
}

OverlayView:

func TopSheetClassViews(abcViewModel: AbcViewModel) -> [AnyView] {
    var views: [AnyView] = []

    for passenger in 0..<abcViewModel.Passengers.count {
        views.append(TopSheetPassengerInfoView(abcViewModel: abcViewModel, index: passenger).convertToAnyView())
    }
    return views
}

struct SelectedTitleView: View {
    @ObservedObject var abcViewModel: AbcViewModel
    var passengerIds: Int
    var body: some View {
        VStack(alignment: .trailing) {
            Text("passengerIds \(passengerIds)") // here getting correct id which I want to pass to AbcView's selectedPassengerId

            Text(abcViewModel.passengerTitle(passengerId: passengerIds))
        }
    }
}

struct TopSheetPassengerInfoView: View {
    @ObservedObject var abcViewModel: AbcViewModel
    var index: Int

    var body: some View {
        VStack(alignment: .leading, spacing: 0) {
            Text(abcViewModel.passengers[index].fullName ?? "")
            SelectedTitleView(abcViewModel: abcViewModel, passengerIds: Int(abcViewModel.Passengers[index].passengerId ?? "") ?? 0)
        }
    }
}
Isn´t this the same question as stackoverflow.com/questions/72310070/…?burnsi
@burnsi that one is deleted and new one is created with more inputsNew iOS Dev
Don´t do that if you have new information add it to your question by edit. All information by the other users got lost.burnsi
@Arasuvel its same question asked by me..i wanted to update it so created new oneNew iOS Dev