戻るボタンのテキストを削除する方法.
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
戻るボタンは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
}
戻るボタンのテキストは、親View Controllerのナビゲーション項目のタイトルから取得されます。そのため、以前のView Controllerのナビゲーション項目のタイトルに設定したものは、現在のView Controllerの戻るボタンのテキストに表示されます。親のView ControllerのviewWillAppearメソッドに、ナビゲーション項目のタイトルとして ""を入れるだけです。
self.navigationItem.title = ""
もう一つの方法は置くことです
self.navigationController?.navigationBar.topItem?.title = ""
現在のView ControllerのviewWillAppearメソッド内。ナビゲーションスタックがあまりにも入れ子になっている場合、これは他の問題を引き起こします。
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
}
}
結果は次のようになります。
この3行のコードをoverride func viewDidLoad() {}
に入れることができます。
let backButton = UIBarButtonItem()
backButton.title = "name"
self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton
戻るボタンは、現在画面に表示されているものではなく、前のView Controllerに属します。戻るボタンを変更するには、プッシュする前に更新する必要があります。viewdidloadを追加します。
スイフト4:
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, 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)
}
これは実際にはbackButtonに代わるものであり、また戻る矢印とスワイプジェスチャーも削除したため、お勧めできません。
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"
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)
表示コントローラーのviewDidLoad
メソッドに、以下を追加します。
// hide navigation bar title in the next controller
let backButton = UIBarButtonItem(title: "", style:.Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButton
Swift 4
前のセグエの準備をするのは正しいことであり、戻るボタンは前のVCに属していますが、追加するだけで不要なコードが増えます。
最善を尽くすには、viewDidLoadに現在のVCのタイトルを設定し、次のVCで自動的に戻るボタンのタイトルを正しく設定します。この行は私のために働きました
navigationController?.navigationBar.topItem?.title = "Title"
これらの答えは問題を解決しますが、これはいくつかの役に立つかもしれませんが
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)
}
}
これを試してください...それは動作します....
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
}
それが役に立てば幸い!! #シフト3
ページ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.
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)
self.navigationController?.pushViewController(vc, animated: true)
の前にself.title = ""
を設定してください。
Swift 4.2では
let backItem = UIBarButtonItem()
backItem.title = ""
navigationItem.backBarButtonItem = backItem