如何在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.