如何在iOS导航控制器中设置返回按钮文本?

251
如何删除返回按钮文本。
当前返回按钮:

< 返回

期望的返回按钮:

< 任何其他

这些都不起作用:
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
28个回答

1

以下代码可以添加到视图控制器中,从中您正在推送视图控制器,您想要更改返回按钮文本的视图控制器。

Swift 5

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

例如:-
  1. 视图控制器1
  2. 视图控制器2
假设我们想要更新视图控制器2的返回标题,并且我们是从视图控制器1推送视图控制器2。
那么你可以使用以下代码:-
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)

1
尝试这个...它会起作用....
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    self.title = ""
}

以上代码将隐藏文本并仅在导航栏上显示后退箭头。

0
如果你正在从页面视图控制器页面推送一个视图控制器,那么你无法更新导航控制器的返回按钮标题。要解决这个问题,创建一个委托回到你的父视图控制器(你也可以遍历视图控制器层次结构返回到父级)。
此外,返回按钮有一个字符限制。如果超过了这个字符限制,系统将默认为“返回”。它不会截断。例如:
backItem.title = "Birthdays/Anniversaries" // Get's converted to "Back".
backItem.title = "Birthdays/Anniversa…" // Fits and shows as is.

0
self.navigationController?.pushViewController(vc, animated: true) 之前设置 self.title = ""

那么你会失去当前的VC标题吗? - famfamfam

0
注意:如果您在处理任何带有多个星号的建议时遇到问题,请确保您在viewDidLoad()中注册您的UITableViewCell,而不是从init()中注册。

0

方案已验证并适用于 Swift 5

以下是针对不同情况的几个解决方案:

1. 删除返回按钮文本

从返回按钮中删除文本的最佳方案是在viewDidLoad()中添加以下代码:

navigationItem.backBarButtonItem = UIBarButtonItem()

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

如果您想设置自己的标题,请通过设置backButton的标题来实现:

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中进行覆盖,例如:
class BaseViewController: UIViewController {

    var customBackButtonTitle: String?

    override func viewDidLoad() {
        super.viewDidLoad()

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

0

适用于Swift 4.2

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

0
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
}

希望有所帮助!#Swift 3


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接