NavigationView внутри NavigationView SwiftUI

#swiftui #navigationview

#swiftui #navigationview

Вопрос:

Как я могу удалить панель навигации внутри NavigationView.Когда я использую navigation view внутри другого navigationview, он показывает мне другую панель навигации и помещает пробел из панели навигации.Как я могу решить эту проблему. Я пытался использовать navigationBarHidden или NavigationBarTitle (displaymode : .inline), но это не сработало.Он работает, когда я использую для одного NavigationView, но внутри другого NavigationView он не работает.

 struct ShowCaseView : View {
    
    var productList = ShowCaseViewModel()
    
    @State var cancellable = Set<AnyCancellable>()
    @State var productListData : ShowCaseDataResponse?
    @State var isAnimating : Bool = true
    @State var showCaseData : [ShowCaseData] = []
    @State var isOpened : Bool = true
    
    
    
    var body: some View {
        
        ZStack{
            
            NavigationView{
            
            ScrollView {
                
                VStack {
                    
                    if productListData?.success == true {
                        
                        ForEach(showCaseData , id:.id) { data in
                            
                            if data.isHeaderVisible == true {
                                
                                Text(data.name ?? "")
                                    .font(.system(size: 18))
                                    .bold()
                                
                            }
                            ListTypeShow(data: data)
                            
                        }
                        
                    }
                    
                }
            }
            }.navigationBarTitle("",displayMode: .inline)
            ActivityIndicator(isAnimating: $isAnimating)
        }
        
        
        .onAppear {
            
            if isOpened == true {
                
                getStoreIndex()
                
            }
            
        }
        
    }
 

введите описание изображения здесь

введите описание изображения здесь

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

1. Зачем вам нужны два NavigationView / s? Не уверен, что он предназначен для этого — я встречал сообщения о многих проблемах для такого случая (даже если вы исправили это). Я рекомендую использовать только один NavigationView в той же иерархии представлений, как она разработана.

2. На самом деле я использую один navigaitonView в том же представлении. Но проблема в том, что я перемещаюсь по этому представлению из другого представления, поэтому именно по этой причине он показывает мне панель навигации, поэтому, когда я попытался использовать другой NavigationView внутри этого представления, он занимает примерно 2 места на панели навигации. Причина, по которой я использую NavigationView, проста в управлении, потому что у меня так много навигации. Но если есть другой способ обойтись без использования NavigationView, я могу это использовать.

Ответ №1:

Если родительский вид ShowCaseView уже есть NavigationView , тогда вам не нужен другой ShowCaseView , ie.

 struct ShowCaseView : View {
    
    var productList = ShowCaseViewModel()
    
    @State var cancellable = Set<AnyCancellable>()
    @State var productListData : ShowCaseDataResponse?
    @State var isAnimating : Bool = true
    @State var showCaseData : [ShowCaseData] = []
    @State var isOpened : Bool = true
    
    var body: some View {
        
        ZStack{
            
//            NavigationView{       // << remove this one !!
 

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

1. Как я не мог об этом подумать 🙂 . Да, это внутри NavigationView. спасибо, это сработало.