如何在Swift中设置button文本

你如何删除后退button的文字。

current back button: <Back desired back button: <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 

后退button属于前一个视图控制器,而不是当前在屏幕上显示的那个。
要修改后退button,您应该启动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 } 

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

你可以从界面构build器中完成,如下所示:

点击前一个视图控制器的导航项

在这里输入图像说明

从属性检查器将后退button文本设置为任何你想要的。 而已!!

在这里输入图像说明

后退button文本取自父视图控制器的导航项目标题。 因此,无论您在前一个视图控制器的导航项目标题上设置什么,都将显示在当前视图控制器的后退button文本上。 您可以将“”作为导航项目标题放在父视图控制器的viewWillAppear方法中。

 self.navigationItem.title = "" 

另一种方法是放

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

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

我不知道你在哪里使用了你的问题,但是如果我在我的ViewController类(我想改变后退button)上使用viewDidLoad()函数,我可以得到想要的结果以下行:

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

结果将是:

之前

在这里输入图像说明

在这里输入图像说明

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

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

这应该工作:

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

如果你使用视图控制器的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 } } 

结果将是:

在这里输入图像说明

呈现控制器viewDidLoad方法中添加:

 // hide navigation bar title in the next controller let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil) navigationItem.backBarButtonItem = backButton 
 let backButton = UIBarButtonItem() backButton.title = "name" self.navigationController!.navigationBar.topItem!.backBarButtonItem = backButton 

那是因为你应该在你的父视图控制器的prepareForSegue中做到这一点:

这应该做的伎俩:

 // MARK: - Navigation override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { navigationItem.title = "AnythingYouWant :)" } 

干杯

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

试试这个…它会工作….

 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 } 

希望能帮助到你!! #swift 3

如果从页面视图控制器页面推动视图控制器,则无法更新导航控制器的后退button标题。 为了解决这个问题,创build一个代理回到你的父视图控制器(你也可以遍历视图控制器层次结构备份到父代)。

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

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