How to customize the navigation back symbol and navigation back text?
You can hide back button text in many ways.Try this simple approach.
Step1: Goto your mainstoryBoard
and click navigationBar
.
Step 2: Goto Attributes Inspector
under Navigation Item
add a BLANK SPACE in Back Button
Step 3: If you want to change backButton
text method is pretty much the same.
Update 1: If you want to use an image as a back button check this link
Update 2:
Method 2: Using custom image as a back button.
Paste below code into your detailVC
and set image for your back Button.
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
title = "Detail VC"
let customButton = UIBarButtonItem(image: UIImage(named: "back"), style: .plain, target: self, action: #selector(backButtonTapped)) //
self.navigationItem.leftBarButtonItem = customButton
}
func backButtonTapped() {
_ = navigationController?.popToRootViewController(animated: true)
}
I am setting back button image in assets catalogue
with the 32
pixel size.I am not sure about the asset image size.Check with apple doc
about the size class.
Output:
Custom back button for NavigationView's navigation bar in SwiftUI
TL;DR
Use this to transition to your view:
NavigationLink(destination: SampleDetails()) {}
Add this to the view itself:
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
Then, in a button action or something, dismiss the view:
presentationMode.wrappedValue.dismiss()
Full code
From a parent, navigate using NavigationLink
NavigationLink(destination: SampleDetails()) {}
In DetailsView hide navigationBarBackButton
and set custom back button to leading navigationBarItem
,
struct SampleDetails: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
var btnBack : some View { Button(action: {
self.presentationMode.wrappedValue.dismiss()
}) {
HStack {
Image("ic_back") // set image here
.aspectRatio(contentMode: .fit)
.foregroundColor(.white)
Text("Go back")
}
}
}
var body: some View {
List {
Text("sample code")
}
.navigationBarBackButtonHidden(true)
.navigationBarItems(leading: btnBack)
}
}
Swift Custom NavBar Back Button Image and Text
You can do something like that:
let yourBackImage = UIImage(named: "back_button_image")
self.navigationController?.navigationBar.backIndicatorImage = yourBackImage
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = yourBackImage
self.navigationController?.navigationBar.backItem?.title = "Custom"
Your image will only have one color though
Use UINavigationBar appearance back icon for custom button?
UINavigationBar.appearance().backIndicatorImage
is an optional value, therefore you won't be able to get the system default chevron from this. Rather, the system will use the image provided here if not null, otherwise revert to the system default.
If targeting iOS 13+, you can make use of Apple's SF Symbols, in particular the back button icon is referred to as chevron.left
. To use this, call UIImage(systemName: "chevron.left")
. For earlier versions of iOS, you'll have to use an image set asset. You could target all versions of iOS using if #available(iOS 13.0, *) { ... } else { ... }
, where you display the system image if on iOS 13+ for improved UI appearance.
func addBackButton() {
let backButton = UIButton(type: .custom)
if #available(iOS 13.0, *) {
backButton.setImage(UIImage(systemName: "chevron.left"), for: .normal)
}
else {
backButton.setImage(UIImage(named: "backChevon"), for: .normal)
}
backButton.imageView?.contentMode = .scaleAspectFit
backButton.setTitle("Back", for: .normal)
backButton.setTitleColor(backButton.tintColor, for: .normal)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
}
How to change back button text in Navigation item to picture in xcode
Add below code in viewDidLoad
of viewController where you want to change back button title:
let backButton = UIBarButtonItem()
backButton.title = ""
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
How can I change the font and color of the Navigation Bar back button
It's a UIBarButtonItem
so set this property.
init() {
UIBarButtonItem.appearance().tintColor = .red
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedString.Key.font: UIFont.systemFont(ofSize: 10)], for: .normal)
}
Or you can use this also,
init() {
let standard = UINavigationBarAppearance()
let button = UIBarButtonItemAppearance(style: .plain)
button.normal.titleTextAttributes = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 10), NSAttributedString.Key.foregroundColor: UIColor.red]
standard.buttonAppearance = button
}
Default text for back button in NavigationView in SwiftUI
I've managed to localize back buttons by providing translations for the Back
key in the Localizable.strings
file.
I am using SwiftUI though.
Related Topics
How to Reference Instance Function When Calling Sequencetype.Foreach
What's the Equivalent of the Uisplitviewcontroller in Swiftui
How to Prevent from Scrolling Uitableview Up When Nsfetchedresultscontroller Add New Record
Error When Trying to Call Setdata(From: ) in the Cloud Firestore iOS API. How to Fix It
Could Not Find an Overload for "Init" That Accepts the Supplied Arguments in Swift
How to Pass Data from One Container to Another, Both Embedded in the Same Uiviewcontroller in Swift
Get iOS Contact Image with Abpersoncopyimagedata
Auto Adjust Custom Uitableviewcell and Label in It to the Text
Remove Space Navigationtitle But Not the Back Button
Retain Cycle (Strong Reference) Fix for Custom Uitextfield
Getter VS Computed Property. What Would Warrant Using One of These Approaches Over the Other
Swift Formatting String to Have 2 Decimal Numbers If It Is Not a Whole Number
How to Make the View Update Instant in Swiftui