Sor*_*ica 5 xcode uikit ios swift swiftui
我使用 aNavigationLink从“View1”导航到“View2”,在第二个视图上,后退按钮获取上一个视图的标题
但是,如果前一个视图的标题很长,则后退按钮将获取文本“后退”
我怎么能改变那个“返回”文本?
我想让我的应用程序以多种语言提供,但是当手机的语言改变时,“返回”似乎没有改变
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")
}
}
}
Run Code Online (Sandbox Code Playgroud)
PS:我想保留这个功能,我只想更改用于后退按钮的语言
这是一个解决方法......
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")
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过隐藏本机 navigationBackButton 在导航链接中创建自定义后退按钮。在自定义后退按钮中,您可以添加翻译后的自定义后退按钮标题。
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)
}
}
Run Code Online (Sandbox Code Playgroud)
输出:-
我已经通过提供文件Back中键的翻译来本地化后退按钮Localizable.strings。
不过我正在使用 SwiftUI。
我找到了一个可以很好工作的解决方案。
View1 用 .principal 设置工具栏项并添加您的文本或您想要的内容。
例如 :
ToolbarItem(placement: .principal) {
HStack{
Text("View1")
}.font(.subheadline)
}
Run Code Online (Sandbox Code Playgroud)
并在 View1 中设置您的标题:
.navigationTitle("Back")
Run Code Online (Sandbox Code Playgroud)
在你看来什么也不做2。它会自动将您的 view1 标题添加到您的 view2 默认后退按钮文本中
| 归档时间: |
|
| 查看次数: |
9244 次 |
| 最近记录: |