Storyboard上のNavigationBarのTitleを変更する【Swift】

作成日
更新日

やっとわかった。Swift始めてもうそこそこたったのにこれだけはなかなか解決できず・・・。

 

基本的にあんまりStoryboardを使わない人なんですが、NavigationBarとSegueに関してだけは使っていて、あんまり使わないからこそなかなか覚えも悪いと・・・。

 

Storyboard上に配置したNavigationBarのタイトルを変更したい時ですが、基本は

2016-03-Storyboard上のNavigationBarのTitleを変更する【Swift】-f982f4cc545b445581606f73630ff47d

 

ここにタイトルを書きますよね。

しかしこのタイトルを場合分けして変更したい!ってこともあると思います。

ちょっと色々あって見難いですが、storyboardを開いた状態で、右上の丸が2つ重なっているマークを押します

 

2016-03-Storyboard上のNavigationBarのTitleを変更する【Swift】-d2e11e24f8c34270b064cefee63f16b9

すると2画面になるので、そこから右側の画面を変更する時は altを押しながら、対象のViewControllerファイルを開きましょう

次にcontrolを押しながらNavigationBarのタイトルをつけた方をみょーんと引っ張ってきて、Outletで繋げます

2016-03-Storyboard上のNavigationBarのTitleを変更する【Swift】-475b473214334ad69368b01ebaac5643

(ここにきてちょっと別のプロジェクトの画面で申し訳ないです・・・)

 

そして繋げた後は、viewDidLayoutSubviewsをoverrideして変更します。

override func viewDidLayoutSubviews(){
        super.viewDidLayoutSubviews()
        navigationBar.title = "タイトル変更"
}

 

わりと初歩的なことかもですが、なかなか変更できなくてずっともやもやしてました。

 

ちなみにこのviewDidLayoutSubviewsはStoryboard上のものが配置された後に呼び出されるものです。

viewDidLoadに書いてしまってもいいかなとも思いますが、念のためにこっちに書いてます。。

 

おまけ

上記のと同様な手順で、Storyboard上に配置したNavigationBarの閉じるボタンを非表示にしたり、文字を変えたりしました。

文字は同様にして変更できます。

UINavigationBarItemにはhiddenがありませんので、非表示にする場合は

//closeBtnという閉じるボタンを非表示にする
closeBtn.title = ""
closeBtn.enabled = false

//文字色をクリアにする場合
closeBtn.tintColor = UIColor.clearColor()
closeBtn.enabled = false

titleの文字を消して、タッチを許可しないようにする方法と

titleの文字色を透明にして見えなくして、タッチを許可しないようにする方法

のどちらでも可能です。

 

storyboardももっとちゃんと活用しなきゃなぁ・・・


追記

(追記日: 2018-04-13)

UINavigationBarにtitleっていうのはないですね UINavigationItemの方を持って来ましょう。

@IBOutlet weak var naviItem: UINavigationItem!

なんでコード上でタイトル変える必要あったんだろうって気にはなりましたがw

naviItem.leftBarButtonItem?.isEnabled = false

isHiddenがないのでisEnabled使うと良いそうです。

今じゃほぼ完全にStoryBoard使わないマンになってしまいました。

サイトアイコン
公開日
更新日