Swift 3.で、戻るボタンのタイトルを任意の名前に変更したい。3。多くの方法を試しましたが、どれもうまくいきませんでした。
self.navigationItem.backBarButtonItem?.title="Title"
self.navigationController?.navigationItem.backBarButtonItem?.title="Title"
参考までに、appdelegateのコードの下に書きました。
let backImage : UIImage = UIImage(named:"backArrow")!
UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().backIndicatorImage = backImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, 0), for: .default)
IQKeyboardManager.sharedManager().enable = true
self.window?.backgroundColor = UIColor.white
ナビゲーションアイテムの戻るボタンの名前は、ナビゲーションスタックにプッシュする前のビューコントローラーのタイトルと同じになります。
したがって、VC AがVC Bを押すと、VC Bの戻るボタンがAになります。
コードを使用して新しいviewControllerをプッシュする前に、前のviewControllerのタイトルを変更するだけです。
self.navigationItem.title = "ABCD"
VC AのViewWillAppearでは、以前のタイトルに戻すことができます:)
self.navigationItem.title = "Back to xyz"
このすべてのサーカスが必要ない場合は、次のようにしてデフォルトの戻るボタンを非表示にできます。
self.navigationItem.hidesBackButton = true
VC Bで、UIBarButtonアイテムを作成し、設定するタイトルを設定してから、それをleftBarButtonItem :)として設定します。
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("ABCD", comment: "ABCD"), style: .plain, target: self, action:#selector(self.abcdTapped:)
もちろん、今では "<"アイコンは表示されません:)これも必要な場合は、画像としてバックバーボタンの項目に追加できます:)しかし、その煩雑さ:)
それが役に立てば幸い :)
backBarButtonItem
をプッシュするnavigationItem
のviewController
のviewController
プロパティを設定する必要があります。
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: nil, action: nil)
ただし、viewController
ごとにこれを設定する必要があります。
これが方法です:
extension UINavigationController {
func addCustomBackButton(title: String = "Back") {
let backButton = UIBarButtonItem()
backButton.title = title
navigationBar.topItem?.backBarButtonItem = backButton
}
}
Swift 3.appdelegate
didFinishLaunchingWithOptions
メソッドのコードの下に配置すると、完全に機能しました
let backImage = UIImage(named: "BackNavigation")?.withRenderingMode(.alwaysOriginal)
UINavigationBar.appearance().backIndicatorImage = backImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -80.0), for: .default)
タイトルを削除したくない場合は、最後の行でNavigation Back Button
のタイトルを削除し、コメントを追加します
私が探していた答えが見つからなかったので、私の解決策をあなたと共有します。
場合によっては、戻るボタンが定義されていると思われるViewControllerではなく、親ViewControllerで戻るボタンのテキストを変更する必要があります。ナビゲーションコントローラはViewControllerを次々にスタックすることに注意してください。
私の場合、「ParentViewController
」の関数prepare(for segue: )
でこれを行いました:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showChildViewController" {
if let childViewController = segue.destination as? ChildViewController {
let backItem = UIBarButtonItem()
backItem.title = "Back"
navigationItem.backBarButtonItem = backItem
}
}
次の手順で画像を戻るボタンに設定してみてください。
出力:
ステップ1:
次のコードをAppDelegateに追加します
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
var backButtonImage = UIImage(named: "Your Image Name")
backButtonImage = backButtonImage?.stretchableImage(withLeftCapWidth: 0, topCapHeight: 0)
UIBarButtonItem.appearance().setBackButtonBackgroundImage(backButtonImage, for: .normal, barMetrics: .default)
UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
return true
}
ステップ2:
MainVCに次のコードを追加します
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
title = "Title 1"
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!]
}
ステップ3:
次のコードをDestVCまたは2ndVCに追加します
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
title = "Title 2"
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!]
}
ステップ4:
StoryBoardからnavigationBarを選択し、Attribute Inspectorに移動します。 ナビゲーション項目の下で、バックを変更しますボタン名空白スペースを入力するか、プログラムでプレーンなタイトルの戻るボタンを作成します。
ステップ5:
アセットにアイコン画像を追加します。 1x29pt、2x58ptおよび3x87pt 。アセット画像のサイズがわかりません。サイズクラスについては、Apple docで確認してください。
更新:
この投稿に関する私の同様の回答。