如何在Swift中设置按钮文本

Oni*_*han 184 objective-c ios swift

如何删除后退按钮文本.

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
Run Code Online (Sandbox Code Playgroud)

这些都没有奏效:

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
Run Code Online (Sandbox Code Playgroud)

Yar*_*sim 560

后退按钮属于上一个视图控制器,而不是当前在屏幕显示的控制器.
要修改后退按钮,您应该推送之前更新它,在启动segue的视图控制器上:

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
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

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

  • "后退按钮属于以前的视图控制器",这是我发现的关于这个主题的最有价值的答案!谢谢! (11认同)
  • 非常感谢,你不知道我花了多少时间来处理这个小细节(以前的控制器) (8认同)
  • 如果我可以投票一百万次,我会.不能告诉你我花多长时间想知道它为什么不起作用(之前在目的地控制器上) (3认同)
  • 我添加了self.navigationController!.navigationBar.topItem!.backBarButtonItem = backItem而不是navigationItem.backBarButtonItem = backItem,它在Swift 3上运行正常.谢谢 (3认同)
  • 它也适用于`viewDidLoad`. (3认同)

Aji*_*til 114

您可以从界面构建器执行以下操作:

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

在此输入图像描述

从属性检查器中将后退按钮文本设置为您想要的任何内容.而已!!

在此输入图像描述

  • @kennydust在后退按钮中添加空格并按回车键 (7认同)
  • 这比IMO接受的答案要清晰得多. (5认同)
  • @AjinkyaPatil我尝试了此操作,但后退按钮未显示。有什么原因吗? (2认同)

min*_*zur 41

后退按钮文本取自父视图控制器的导航项标题.因此,无论您在之前的视图控制器的导航项目标题上设置什么,都将显示在当前视图控制器的后退按钮文本上.您可以在父视图控制器的viewWillAppear方法中将""作为导航项标题.

self.navigationItem.title = ""
Run Code Online (Sandbox Code Playgroud)

另一种方式是放

self.navigationController?.navigationBar.topItem?.title = ""
Run Code Online (Sandbox Code Playgroud)

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

  • self.navigationItem.title =""应该是最好的答案! (4认同)

小智 33

您可以将这3行代码放入您的代码中override func viewDidLoad() {}.

let backButton = UIBarButtonItem()

backButton.title = "name"

self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案似乎更正确,因为您将逻辑放在到达的 VC 中,而不是您要离开的 VC 中。阿卡:读得更好。 (3认同)
  • 可行的解决方案,但有一个很大的警告:请记住后退按钮仍然属于*前一个*视图控制器。例如,如果您的导航是 A > B < 返回 A > C,并且您将此代码放入 B 中,则 C 中的后退按钮也会显示“我的后退按钮标题” (3认同)

mus*_*taq 33

如果您正在为视图控制器使用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
}

}
Run Code Online (Sandbox Code Playgroud)

结果将是:

在此输入图像描述


Fra*_*ero 28

我不知道你在哪里使用了你提出问题的方法,但是如果我在我的ViewController课堂上(我想改变后退按钮),我可以得到所需的结果,在viewDidLoad()功能上,如下所示:

self.navigationController?.navigationBar.backItem?.title = "Anything Else"
Run Code Online (Sandbox Code Playgroud)

结果将是:

之前

在此输入图像描述

在此输入图像描述

  • 就我而言,仅当您将这段代码放在viewDidAppear方法上而不是viewDidLoad方法上时,它才有效 (2认同)
  • 使用`navigationController.navigationBar.topItem?.title =""`来避免将它放在`viewDidAppear`中 (2认同)

Moh*_*our 18

后退按钮属于上一个视图控制器,而不是当前在屏幕上显示的控制器.要修改后退按钮,您应该在推送之前更新它,添加viewdidload:

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: nil)
Run Code Online (Sandbox Code Playgroud)


xhi*_*oda 11

您只需修改故事板中的NavigationItem即可

在此输入图像描述

在后退按钮中添加一个空格,然后按Enter键.

注意:在之前的VC中执行此操作.


Dej*_*dar 8

这应该工作:

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)
}
Run Code Online (Sandbox Code Playgroud)

虽然不建议这样做,因为它实际上替换了backButton并且还删除了后退箭头和滑动手势.

  • 不是正确的方法,你只需要更换后退按钮 (10认同)

bud*_*ino 7

Swift 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)
Run Code Online (Sandbox Code Playgroud)


ikb*_*bal 7

斯威夫特4.2

如果要更改导航栏的后退按钮项文本,请将其放在viewDidLoad控制器中显示后退按钮的位置之前,而不是放在显示后退按钮的视图控制器上。

 let backButton = UIBarButtonItem()
 backButton.title = "New Back Button Text"
 self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
Run Code Online (Sandbox Code Playgroud)

如果要更改当前导航栏标题文本,请使用下面的代码(请注意,这将成为推送到导航控制器上的NEXT视图的默认背景文本,但是该默认背景文本可以被上面的代码覆盖)

 self.title = "Navigation Bar Title"
Run Code Online (Sandbox Code Playgroud)


小智 7

有两种方法。

1.在之前的ViewController.viewDidLoad()

let backBarBtnItem = UIBarButtonItem()
backBarBtnItem.title = "back"
navigationItem.backBarButtonItem = backBarBtnItem
Run Code Online (Sandbox Code Playgroud)

2.在currentViewController.viewDidAppear()

let backBarBtnItem = UIBarButtonItem()
backBarBtnItem.title = "back"      
navigationController?.navigationBar.backItem?.backBarButtonItem = backBarBtnItem
Run Code Online (Sandbox Code Playgroud)

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

更多详细信息,您可以查看文档:UINavigationBar


osk*_*rko 6

返回按钮文本和颜色文本:

navigationController?.navigationBar.tintColor = .red
navigationController?.navigationBar.topItem?.backButtonTitle = "Hi"
Run Code Online (Sandbox Code Playgroud)