web-dev-qa-db-ja.com

Swiftでボタンテキストを元に戻す方法

戻るボタンのテキストを削除する方法.

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
167
Onichan

戻るボタンはpreviousビューコントローラに属し、現在画面に表示されているものではありません。
戻るボタンを変更するには、セグエを開始したView Controllerで、before pushを更新する必要があります。

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
}

スイフト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
}
535
Yariv

あなたは以下のようにインターフェースビルダーからそれをすることができます:

前のView Controllerのナビゲーション項目をクリックします

enter image description here

属性インスペクタから、戻るボタンのテキストを好きなように設定します。 それだよ!!

enter image description here

106
Ajinkya Patil

戻るボタンのテキストは、親View Controllerのナビゲーション項目のタイトルから取得されます。そのため、以前のView Controllerのナビゲーション項目のタイトルに設定したものは、現在のView Controllerの戻るボタンのテキストに表示されます。親のView ControllerのviewWillAppearメソッドに、ナビゲーション項目のタイトルとして ""を入れるだけです。

self.navigationItem.title = ""

もう一つの方法は置くことです

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

現在のView ControllerのviewWillAppearメソッド内。ナビゲーションスタックがあまりにも入れ子になっている場合、これは他の問題を引き起こします。

40
minhazur

View Controllerにxibファイルを使用している場合は、View Controllerクラスでこれを行います。

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
}

}

結果は次のようになります。

enter image description here

29
mustaq

この3行のコードをoverride func viewDidLoad() {}に入れることができます。

let backButton = UIBarButtonItem()

backButton.title = "name"

self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
26
Hitesh Chauhan

私があなたがあなたの質問に置いたあなたの方法をどこで使ったかはわかりませんが、私がViewControllerクラス(私は戻るボタンを変更したいです)、viewDidLoad()関数、次の行を使うと望ましい結果が得られます:

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

結果は次のようになります。

enter image description here

enter image description here

26

戻るボタンは、現在画面に表示されているものではなく、前のView Controllerに属します。戻るボタンを変更するには、プッシュする前に更新する必要があります。viewdidloadを追加します。

スイフト4:

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

ストーリーボードでNavigationItemを変更するだけです

enter image description here

戻るボタンにスペースを追加して、Enterキーを押します。

注:前のVCでこれをして下さい。

10
xhinoda

これはうまくいくはずです。

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

これは実際にはbackButtonに代わるものであり、また戻る矢印とスワイプジェスチャーも削除したため、お勧めできません。

8
Dejan Skledar

Swift 4.2

ナビゲーションバーの戻るボタン項目のテキストを変更する場合は、戻るボタンが表示されるビューコントローラではなく、戻るボタンが表示される場所の前に、これをコントローラのviewDidLoadに配置します。

 let backButton = UIBarButtonItem()
 backButton.title = "New Back Button Text"
 self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton

現在のナビゲーションバーのタイトルテキストを変更する場合は、次のコードを使用します(これがナビゲーションコントローラにプッシュされたNEXTビューのデフォルトのバックテキストになりますが、このデフォルトのバックテキストは上記のコードで上書きできます)。

 self.title = "Navigation Bar Title"
7
ikbal

Swift 4 - View Controllerを押す前に戻るボタンを設定する

// 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)
7
budidino

表示コントローラーviewDidLoadメソッドに、以下を追加します。

// hide navigation bar title in the next controller
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButton
3
Claus

Swift 4

前のセグエの準備をするのは正しいことであり、戻るボタンは前のVCに属していますが、追加するだけで不要なコードが増えます。

最善を尽くすには、viewDidLoadに現在のVCのタイトルを設定し、次のVCで自動的に戻るボタンのタイトルを正しく設定します。この行は私のために働きました

navigationController?.navigationBar.topItem?.title = "Title"
2
Joel

これらの答えは問題を解決しますが、これはいくつかの役に立つかもしれませんが

class MainNavigatioController: UINavigationController {

    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        // first
        let backItem = UIBarButtonItem()
        backItem.title = "رجوع"
        self.viewControllers.last?.navigationItem.backBarButtonItem = backItem
        // then
        super.pushViewController(viewController, animated: animated)

    }

}
1
Ahmad Labeeb

これを試してください...それは動作します....

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    self.title = ""
}

上記のコードはテキストを隠し、ナビゲーションバーに戻る矢印だけを表示します。

1
Sarabjit Singh
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
}

それが役に立てば幸い!! #シフト3

0
Gurunathan

ページView ControllerページからView Controllerをプッシュしている場合は、Navigation Controllerの戻るボタンのタイトルを更新できません。これを解決するには、親のView Controllerにデリゲートを作成し直します(View Controllerの階層を親に戻ることもできます)。

さらに、戻るボタンには文字数制限があります。その文字数制限を超えると、システムはデフォルトで「戻る」になります。切り捨てられません。例えば:

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

Swift 4

私の場合の解決策は、子View Controllerに移動する前にMaster View Controllerのナビゲーション項目をクリアすることでした。また表示されている場合は再度設定してください

MasterController

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationItem.title = "Master Title"
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationItem.title = ""
}

そして、これが私がUIViewControllerを押して子コントローラーのバックバーボタン項目をクリアする方法です:

MasterController

let childController = ChildController(collectionViewLayout: UICollectionViewFlowLayout())
childController.navigationItem.backBarButtonItem?.title = ""
navigationController?.pushViewController(childController, animated: true)
0
Jorge Casariego

self.navigationController?.pushViewController(vc, animated: true)の前にself.title = ""を設定してください。

0
米米米

Swift 4.2では

let backItem = UIBarButtonItem()
backItem.title = ""
navigationItem.backBarButtonItem = backItem
0
Iryna Batvina