// // MainView.swift // VolnahubApp // // Created by cheykrym on 09/06/2025. // import SwiftUI struct MainView: View { @ObservedObject var viewModel: LoginViewModel @State private var selectedTab: Int = 0 // Состояния для TopBarView, когда активна вкладка Profile @State private var selectedAccount = "@user1" @State private var accounts = ["@user1", "@user2", "@user3"] @State private var sheetType: ProfileTab.SheetType? = nil private var tabTitle: String { switch selectedTab { case 0: return "Home" case 1: return "Search" case 2: return "Chats" case 3: return "Profile" default: return "Home" } } var body: some View { NavigationView { // NavigationView нужен здесь для NavigationLink в TopBarView VStack(spacing: 0) { TopBarView( title: tabTitle, selectedAccount: $selectedAccount, sheetType: $sheetType, accounts: accounts, viewModel: viewModel ) ZStack { switch selectedTab { case 0: HomeTab() case 1: SearchTab() case 2: ChatsTab() case 3: // Передаем состояния в ProfileTab ProfileTab( viewModel: viewModel, sheetType: $sheetType, selectedAccount: $selectedAccount, accounts: $accounts ) default: HomeTab() } } .frame(maxWidth: .infinity, maxHeight: .infinity) CustomTabBar(selectedTab: $selectedTab) { // Действие для кнопки "Создать" print("Create button tapped") } } .ignoresSafeArea(edges: .bottom) .navigationBarHidden(true) // Скрываем стандартный NavigationBar .sheet(item: $sheetType) { type in // Обработка sheet, перенесенная из ProfileTab switch type { case .accountShare: AccountShareSheet( isPresented: Binding( get: { sheetType != nil }, set: { if !$0 { sheetType = nil } } ), selectedAccount: $selectedAccount, accounts: accounts ) } } } .navigationViewStyle(StackNavigationViewStyle()) // Важно для корректной работы } } struct MainView_Previews: PreviewProvider { static var previews: some View { let mockViewModel = LoginViewModel() MainView(viewModel: mockViewModel) } }