所以我有3个View控制器:V1,V2和V3。当我按下V1上的按钮时,它会将我射到V3。我想保留" Back Arrow"但改变那里的文字。我已经尝试了很多东西,但是当显示视图或者我的代码不起作用时,后面的单词要么重新收回。
任何建议?
我已经使用过此代码
self.navigationController?.navigationBar.topItem?.backBarButtonItem = UIBarButtonItem(title: "YO", style: .Plain, target: nil, action: nil)
let backbutton = UIButton(type: .Custom)
backbutton.setImage(UIImage(named: "BackButton.png"), forState: .Normal) // Image can be downloaded from here below link
backbutton.setTitle("Back", forState: .Normal)
backbutton.setTitleColor(backbutton.tintColor, forState: .Normal) // You can change the TitleColor
backbutton.addTarget(self, action: "backAction", forControlEvents: .TouchUpInside)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backbutton)
func backAction() -> Void {
self.navigationController?.popViewControllerAnimated(true)
}
我尝试使用我在Stack上找到的代码创建我的按钮但按钮消失了,后退按钮再次出现在它的位置。
答案 0 :(得分:1)
您可以将navigationItem.leftBarButtonItem
设置为您自己设计的按钮。这会覆盖backBarButtonItem
,iOS不会用“后退”替换您的文字。但是如果你想要一个箭头,你必须自己设计它作为按钮的一部分。
在我的代码中,每当标题发生变化时我都会设置按钮:
override var title:String? {
get {
return super.title
}
set {
super.title = newValue
if (navigationController?.childViewControllers.count > 1) {
let backButton = // ... custom button
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
backButton.addTarget(self, action: "backAction", forControlEvents: .TouchUpInside)
} else {
navigationItem.hidesBackButton = true
}