如何设置回退按钮文本在Swift

如何删除后退按钮的文本。

当前返回按钮:

& lt;回来

需要的后退按钮:

& lt;AnythingElse

这些都没有奏效:

self.navigationItem.backBarButtonItem?.title = "Back"
self.backItem?.title = ""
self.navigationController?.navigationBar.backItem?.title = ""
self.navigationItem.backBarButtonItem?.title = ""
self.navigationController?.navigationItem.backBarButtonItem?.title="Back"
self.navigationController?.navigationBar.backItem?.title = ""
self.navigationController?.navigationItem.backBarButtonItem?.title
224792 次浏览

这应该可以工作:

override func viewDidLoad() {
super.viewDidLoad()


var button = UIBarButtonItem(title: "YourTitle", style: UIBarButtonItemStyle.Bordered, target: self, action: "goBack")
self.navigationItem.backBarButtonItem = button


}


func goBack()
{
self.navigationController?.popViewControllerAnimated(true)
}

虽然不建议这样做,因为这实际上取代了backButton,它也删除了后退箭头和滑动手势。

返回按钮属于以前的视图控制器,而不是当前显示在屏幕上的那个 要修改后退按钮,你应该在启动segue的视图控制器上更新它之前 pushing:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let backItem = UIBarButtonItem()
backItem.title = "Something Else"
navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}

Swift 3,4 &5:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let backItem = UIBarButtonItem()
backItem.title = "Something Else"
navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}

// in your viewDidLoad or viewWillAppear
navigationItem.backBarButtonItem = UIBarButtonItem(
title: "Something Else", style: .plain, target: nil, action: nil)


你可以从接口生成器这样做:

单击上一个视图控制器的导航项

enter image description here

在属性检查器中,将后退按钮文本设置为您想要的任何文本。这就是它! !

enter image description here

后退按钮文本取自父视图控制器的导航项标题。所以无论你在前一个视图控制器的导航项标题上设置了什么,都会显示在当前视图控制器的后退按钮文本上。 你可以在父视图控制器的viewWillAppear方法中添加""作为导航项标题
self.navigationItem.title = ""

另一种方法是

self.navigationController?.navigationBar.topItem?.title = ""

在当前视图控制器的viewWillAppear方法中。如果导航堆栈嵌套过多,这将导致一些其他问题。

显示控制器viewDidLoad方法中添加:

// hide navigation bar title in the next controller
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButton
返回按钮属于前一个视图控制器,而不是当前显示在屏幕上的那个。 要修改后退按钮,你应该在按之前更新它,添加viewdidload:

斯威夫特4:

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: nil)

我不知道你在哪里使用了你的方法,但我可以得到想要的结果,如果我在我的ViewController类(其中我想更改返回按钮)上使用viewDidLoad()函数,下面这行:

self.navigationController?.navigationBar.backItem?.title = "Anything Else"

结果将是:

之前

enter image description here

enter image description here

< p > self.title = ""设置 之前self.navigationController?.pushViewController(vc, animated: true) . < / p >

你可以把这3行代码ViewController你想改变后退按钮的标题。

在你的override func viewDidLoad() {}

let backButton = UIBarButtonItem()
backButton.title = "My Back Button Title"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton

试试这个…它将工作....

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
self.title = ""
}

上面的代码将隐藏文本,只显示导航栏上的后退箭头。

override func viewWillAppear(_ animated: Bool) {


self.tabBarController?.navigationItem.title = "Notes"


let sendButton = UIBarButtonItem(title: "New", style: .plain, target: self, action: #selector(goToNoteEditorViewController))


self.tabBarController?.navigationItem.rightBarButtonItem = sendButton
}


func goToNoteEditorViewController(){
// action what you want
}

希望能有所帮助!!3 #迅速

如果你正在为视图控制器使用xib文件,那么在你的视图控制器类中这样做。

class AboutUsViewController: UIViewController {


override func viewDidLoad() {
super.viewDidLoad()
edgesForExtendedLayout = []
setUpNavBar()
}


func setUpNavBar(){
//For title in navigation bar
self.navigationController?.view.backgroundColor = UIColor.white
self.navigationController?.view.tintColor = UIColor.orange
self.navigationItem.title = "About Us"


//For back button in navigation bar
let backButton = UIBarButtonItem()
backButton.title = "Back"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
}


}

结果将是:

enter image description here

如果你正在从页面视图控制器页面推送一个视图控制器,你不能更新导航控制器的后退按钮标题。要解决这个问题,创建一个委托回到你的父视图控制器(你也可以遍历视图控制器层次结构回到父视图控制器)。

此外,后退按钮有字符限制。如果超过该字符限制,系统将默认为“返回”。它不会为你截断。例如:

backItem.title = "Birthdays/Anniversaries" // Get's converted to "Back".
backItem.title = "Birthdays/Anniversa…" // Fits and shows as is.

你可以在故事板中修改NavigationItem

enter image description here

在后退按钮中添加一个空格并按Enter。

注意:在之前的VC中这样做。

斯威夫特4 -在推任何视图控制器之前配置返回按钮

// if you want to remove the text
navigationItem.backBarButtonItem = UIBarButtonItem()


// if you want to modify the text to "back"
navigationItem.backBarButtonItem = UIBarButtonItem(title: "back", style: .plain, target: nil, action: nil)

斯威夫特4

在我的案例中,解决方案是在移动到子视图控制器之前清除主视图控制器的导航项。如果再次显示,请重新设置

中央控制室

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationItem.title = "Master Title"
}


override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationItem.title = ""
}

这就是我如何推送一个UIViewController并清除子控制器中的后栏按钮项:

中央控制室

let childController = ChildController(collectionViewLayout: UICollectionViewFlowLayout())
childController.navigationItem.backBarButtonItem?.title = ""
navigationController?.pushViewController(childController, animated: true)

虽然这些答案解决了问题,但这可能是一些有用的

class MainNavigatioController: UINavigationController {


override func pushViewController(_ viewController: UIViewController, animated: Bool) {
// first
let backItem = UIBarButtonItem()
backItem.title = "رجوع"
self.viewControllers.last?.navigationItem.backBarButtonItem = backItem
// then
super.pushViewController(viewController, animated: animated)


}


}

斯威夫特4.2

如果你想改变导航栏后退按钮项的文本,把它放在控制器的viewDidLoad中,在后退按钮显示之前,而不是在后退按钮可见的视图控制器中。

 let backButton = UIBarButtonItem()
backButton.title = "New Back Button Text"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton

如果你想改变当前导航栏标题文本,请使用下面的代码(注意,这将成为NEXT视图推到导航控制器上的默认回显文本,但这个默认回显文本可以被上面的代码覆盖)

 self.title = "Navigation Bar Title"

斯威夫特4

虽然前面说的准备segue是正确的,后退按钮属于之前的VC,它只是增加了一堆不必要的代码。

最好的方法是在viewDidLoad中设置当前VC的标题,它会自动在下一个VC上正确设置返回按钮的标题。这句话对我很管用

navigationController?.navigationBar.topItem?.title = "Title"

Swift 4.2

let backItem = UIBarButtonItem()
backItem.title = ""
navigationItem.backBarButtonItem = backItem

这适用于斯威夫特5:

self.navigationItem.backBarButtonItem?.title = ""

请注意,它将对下一个被推送的视图控制器有效,而不是当前显示的视图控制器,这就是为什么它非常令人困惑!

同样,检查故事板并选择以前的视图控制器的导航项,然后在后退按钮(检查器)中键入一些内容。

有两种方法。

1.在previousViewController.viewDidLoad()中

let backBarBtnItem = UIBarButtonItem()
backBarBtnItem.title = "back"
navigationItem.backBarButtonItem = backBarBtnItem

2.在currentviewcontroller。viewdidappear()中

let backBarBtnItem = UIBarButtonItem()
backBarBtnItem.title = "back"
navigationController?.navigationBar.backItem?.backBarButtonItem = backBarBtnItem

原因:backButton来自navigationBar.backItem.backBarButtonItem,所以第一种方法是显而易见的。在currentViewController.viewDidLoad()中,我们无法获得backItem的引用,因为在viewDidAppear()中,navigationBarnavigationView压入到它的stack上。因此我们可以在currentViewController.viewDidAppear()中对backItem进行更改。

更多细节,你可以看到文档:UINavigationBar

解决方案检查和工作在斯威夫特5

下面是针对不同情况的一些解决方案:

1. 从后退按钮中删除文本

从后退按钮中删除文本的最佳解决方案是在viewDidLoad()中添加:

navigationItem.backBarButtonItem = UIBarButtonItem()

2. 在返回按钮上设置自己的文本

如果你想设置你自己的标题,可以通过设置backButton的title:

let backButton = UIBarButtonItem()
backButton.title = "My Title"
navigationItem.backBarButtonItem = backItem

3.清空所有VC上的返回按钮

如果你想在整个应用程序中创建通用样式-只有箭头返回而没有文本,为所有的视图控制器创建基础VC:

class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()


navigationItem.backBarButtonItem = UIBarButtonItem()
}
}

上面给出的解决方案可以让你在将来自定义返回按钮,如果你以后想要做一些例外,通过添加额外的变量并在特定的ViewController中重写它,f.x:

class BaseViewController: UIViewController {


var customBackButtonTitle: String?


override func viewDidLoad() {
super.viewDidLoad()


var backButton = UIBarButtonItem()
if let text = customBackButtonTitle {
backButton.title = text
}
navigationItem.backBarButtonItem = backButton
}
}

明白了:如果你对任何多星建议有问题,请确保你是在viewDidLoad()中注册你的__abc0,而不是从init()中注册

下面的代码可以添加到视图控制器中,从你想要更改返回按钮文本的视图控制器中

斯威夫特5

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: nil)

例如:-

  1. ViewController1
  2. ViewController2

假设我们想要更新回viewcontroller2的标题,我们从viewcontroller1推送viewcontroller2。

那么您可以使用以下代码:-

let vc2 = storyboard.instantiateViewController(withIdentifier: "ViewController2")
self.navigationItem.backBarButtonItem = UIBarButtonItem(title:  "your custom back button title", style: .plain, target: self, action: nil)
self.navigationController?.pushViewController(vc2, animated: true)

这对我很管用。斯威夫特5

navigationItem.backButtonTitle = ""

后退按钮文本和彩色文本:

navigationController?.navigationBar.tintColor = .red
navigationController?.navigationBar.topItem?.backButtonTitle = "Hi"

有两种不同的方法来植入那部分, < / p >

1.

navigationItem.backButtonTitle = "Title Goes Here"

(5)迅速

< p > 2 . < / p >
 let backButton = UIBarButtonItem()
< p > backButton。title = "标题到此;; self.navigationController .navigationBar.topItem ?。backBarButtonItem = backButton