Вызов навигационного представления из другого представления Swift 5

#uinavigationcontroller #viewcontroller #swift5 #xcode12

#uinavigationcontroller #viewcontroller #swift5 #xcode12

Вопрос:

Я пытаюсь вызвать навигационное представление из другого представления, используя панель навигации. Однако, когда я пытаюсь вызвать его, он просто появляется пустым. Я думаю, что что-то пойдет не так, если я вызову представление, в котором есть представление навигации. Представление, которое я пытаюсь вызвать, — это TeamList() . Я попытался вызвать другие представления, и это работает, но только TeamList() не работает, поскольку на нем есть представление навигации. Есть идеи?

Вот представление, которое я пытаюсь вызвать

 import SwiftUI
 
struct TeamList: View {
    init() {
        UITableView.appearance().backgroundColor = UIColor(.pink)
        UITableViewCell.appearance().backgroundColor = UIColor(.pink)
        UITableView.appearance().tableFooterView = UIView()
    }
    var body: some View {
        NavigationView {
            List(teamData) { team in
                NavigationLink(destination: TeamDetail(team: team)) {
                        TeamRow(team: team)
                }
            }
            .navigationBarTitle(Text("Club List"))
        }
    }
}

struct TeamList_Previews: PreviewProvider {
    static var previews: some View {
        TeamList()
    }
}
 

И вот представление, из которого я его вызываю

 import SwiftUI

struct ContentView: View {
    var body: some View {
        CustomNaviagtionBar()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

struct Home : View {
    var body: some View {
        VStack {
            HStack {
                Image("epl")
                VStack(alignment: .leading) {
                    Text("Premier League")
                    Text("See the latest matches")
                }
                .padding(.top, 40)
                
                Spacer()
                
                            }
            Spacer()
        }.background(Color.pink).edgesIgnoringSafeArea(.all).foregroundColor(.white)
    }
}

var tabs = ["Home","Ranking","Clubs"]

struct BarButton : View {
    var image : String
    @Binding var Tab : String
    
    var body: some View {
        Button(action: {Tab = image}) {
            Image(image)
                .renderingMode(.template)
                .foregroundColor(Tab == image ? Color(.blue) : Color.black.opacity(0.4))
                .padding()
        }
    }
}

struct CustomNaviagtionBar : View {
    @State var Tab = "Home"
    @State var edge = UIApplication.shared.windows.first?.safeAreaInsets
    
    var body: some View {
        ZStack(alignment: Alignment(horizontal: .center, vertical: .bottom)){
            
            
            TabView(selection: $Tab) {
                              
                              Home()
                                  .tag("Home")
                              
                              Ranking()
                                  .tag("Ranking")
                              
                              Clubs()
                                  .tag("Clubs")
                              
                          }
                          .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
                          .ignoresSafeArea(.all, edges: .bottom)
            
            HStack(spacing: 0){
                ForEach(tabs, id: .self){image in
                    BarButton(image: image, Tab: $Tab)
                    
                    if image != tabs.last{
                        Spacer(minLength: 0)
                    }
                }
            }
        }
    }
}
struct Ranking : View {
    
    var body: some View{
        
        VStack{
            
            Text("Ranking")
        }
    }
}

struct Clubs : View {
    
    var body: some View{
        TeamList() // This is the view that I am trying to call but come up blank

    }
}

 

Комментарии:

1. Это вызвано из-за PageTabViewStyle . Может возникнуть проблема с NavigationsBar внутри PageTabView

2. @davidev Есть ли способ обойти это? или мне нужно все изменить