Текст по умолчанию для кнопки «Назад» в NavigationView в SwiftUI - PullRequest
0 голосов
/ 20 января 2020

Я использую NavigationLink для перехода от «View1» к «View2», на втором экране кнопка «Назад» возвращает название предыдущего представления

enter image description here

Но, если заголовок предыдущего представления очень длинный, тогда кнопка возврата возвращает текст «Назад»

enter image description here

Как я могу изменить этот текст «Назад»?

Я хочу сделать свое приложение доступным на нескольких языках, но кажется, что «Назад» не меняется при изменении языка телефона

struct ContentView: View {

    var body: some View {

        return NavigationView {
            VStack {
                Text("View1")
                NavigationLink(destination: Text("View2").navigationBarTitle("Title View2", displayMode: .inline)) {
                    Text("NavigationLink")
                }
            }.navigationBarTitle("Title View1")
        }

    }
}

PS : Я хотел бы сохранить эту функциональность как есть, я просто хочу изменить язык, используемый для кнопки возврата

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Вы можете создать пользовательскую кнопку возврата в своей навигационной ссылке, скрыв родную навигационную кнопку BackButton. В пользовательскую кнопку возврата вы можете добавить переведенное название пользовательской кнопки возврата.

struct ContentView: View {

    var body: some View {

        return NavigationView {
            VStack {
                Text("View1")
                NavigationLink("NavigationLink", destination: NextView())
            }.navigationBarTitle("Title View1")
        }
    }
}
struct NextView: View {
    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>

    var backButton : some View { Button(action: {
        self.presentationMode.wrappedValue.dismiss()
        }) {
            HStack {
            Image("backImage") // BackButton Image
                .aspectRatio(contentMode: .fit)
                .foregroundColor(.white)
                Text("Go Back") //translated Back button title 
            }
        }
    }
    var body: some View {
            VStack {
            Text("View2")
        }
        .navigationBarTitle("Title View2",displayMode: .inline)
        .navigationBarBackButtonHidden(true)
        .navigationBarItems(leading: backButton)
    }
}

Вывод: -

enter image description here

0 голосов
/ 20 января 2020

вот обходной путь ....

struct ContentView: View {
        @State private var isActive: Bool = false

        var body: some View {
            NavigationView {
                VStack {
                    NavigationLink(destination: DetailView(), isActive: $isActive) {
                        Text("Title View2")
                    }
                }.navigationBarTitle(! isActive ? "Title View2" : "Your desired back Title", displayMode: .inline)
            }
        }
    }

    struct DetailView: View {
        var body: some View {
            Text("View2")
        }
    }
...