2015-12-23 109 views
-1

所以我有3個視圖控制器:V1,V2和V3。當我按下V1上的一個按鈕時,它會將我射向V3。我想保留「後退箭頭」,但改變那裏的文字。我已經嘗試了很多東西,但是當顯示視圖或我的代碼不起作用時,返回的單詞可能會收回。在導航控制器中設置後退按鈕

有什麼建議嗎?

我已經使用這個代碼

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

我想這個代碼,我就發現堆棧創建我的按鈕,但該按鈕消失,返回按鈕在它的地方又出現了。

+2

爲返回按鈕是由前一視圖控制器 – Paulw11

+1

的標題集出現的文本'self.navigationItem.backBarButtonItem =的UIBarButtonItem (title:「」,style:UIBarButtonItemStyle.Plain,target:nil,action:nil)'在'viewDidLoad'中試試這個,並且已經有很多與此相關的問題了。 – Buntylm

+1

@ Paulw11是的,我知道這一點。當視圖顯示新文本出現在那裏,但突然之後,Back取代它。 – JakeC

回答

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

我真的試過這樣做,彈出按鈕然後消失,後退按鈕再次出現。我用我創建的按鈕更新了我的代碼 – JakeC

+0

從我的項目上面添加了代碼 –

+0

這個答案很好。我只需要現在製作一個自定義後退按鈕。如果您有時間這樣做,請發佈!謝謝 – JakeC

相關問題