programing

Swift를 사용하면 탐색 제목이 표시되지 않는 이유는 무엇입니까?UI?

iphone6s 2023. 9. 4. 19:37
반응형

Swift를 사용하면 탐색 제목이 표시되지 않는 이유는 무엇입니까?UI?

배우고 있습니다SwiftUIApple 공식 튜토리얼 사용하기: https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation

탐색 제목을 표시하기 전까지는 모든 것이 완벽하게 작동합니다.NavigationView전화로.navigationBarTitle.

라이브 뷰를 새로 고치고 Xcode를 다시 시작하려고 했지만 여전히 나타나지 않습니다.

내 코드는 다음과 같습니다.

import SwiftUI

struct LandmarkList : View {
    var body: some View {
        NavigationView {
            List(landmarkData) { landmark in
                LandmarkRow(landmark: landmark)
            }
        }
        .navigationBarItem(title: Text("Done"))
        .navigationBarTitle(Text("Landmarks"))
    }
}

#if DEBUG
struct LandmarkList_Previews : PreviewProvider {
    static var previews: some View {
        LandmarkList()
    }
}
#endif

Xcode는 다음과 같습니다.

Screenshot

튜토리얼에 따르면 내비게이션 제목이 표시되어야 하는데 제 경우에는 표시되지 않습니다.

왜 그런지 추측이라도?감사합니다!

.navigationBarTitle()그리고..navigationBarItem()의 수정자입니다.View의 내부에NavigationView에 없는NavigationView자체:

struct LandmarkList: View {
    var body: some View {
        NavigationView {
            List(landmarkData) { landmark in
                LandmarkRow(landmark: landmark)
            }
            .navigationBarItem(title: Text("Done"))
            .navigationBarTitle(Text("Landmarks"))
        }
    }
}

그리고 생각해보면, 이것은 말이 됩니다.처럼View의 내부에NavigationView변경사항, 새로운View탐색 모음의 제목과 내용을 지정합니다.

설명:

NavigationView일부 콘텐츠를 둘러싼 컨테이너일 뿐입니다.페이지를 이동할 때 내용이 변경되지만,NavigationView지속성이 있습니다.

요점은NavigationView각각 표시view의 내용을 보여줄 때.그래서 그것은 목적지와 함께 캡슐화될 것입니다.

마지막으로, 탐색 내부에 모든 탐색 수정자를 추가해야 합니다(내용).

⚠️ iOS 14+부터 사용해야 합니다.ToolbarItem대신에navigationBarItem아래와 같이


예:

struct Content: View {
    var body: some View {
        Text("Some. content")

            // iOS 14+
            .toolbar {
                ToolbarItem(placement: .navigationBarTrailing) { Text("Done") }
            }

            // iOS 13-16.4(deprecated) - You can use toolbar now
            // .navigationBarItems(trailing: Text("Done"))

            .navigationBarTitle(Text("Landmarks"))
    }
}
struct Parent: View {
    var body: some View {
        NavigationView {
            Content() // This contains navigation modifiers inside the view itself
        }
    }
}

버튼으로 내비게이션 제목을 찾고 있다면 이 코드가 도움이 될 수 있습니다.

struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("SwiftUI")
                .navigationTitle("Screen Title")
                .toolbar {
                    Button("Right") {
                        print("Right button tapped!")
                    }
                }
        }
    }
}

여기에 도착하여 사용하는 경우NavigationStack(사실 NavigationView에는 iOS 16 이후의 향후 사용 중단에 대한 경고가 있습니다.).navigationTitle("My title")의 내용에 대한 수식어NavigationStack에 없는NavigationStack그 자체로

예.

var body: some View {
    NavigationStack(path: $path) {
        List {
            [...]
        }
        .navigationTitle("My title")  //    <<-- !! Modifier goes here !!
    }
}

.modifier(NavigationView()는 이전이 아닌 .navigationBar* 수식어 뒤에 추가해야 함

언급URL : https://stackoverflow.com/questions/56658948/why-doesnt-the-navigation-title-show-up-using-swiftui

반응형