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

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

 

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

 

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

スクリーンショット-2016-03-09-10.21.32

 

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

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

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

 

スクリーンショット-2016-03-09-10.28.57

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

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

スクリーンショット-2016-03-09-10.46.28

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

 

そして繋げた後は、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/14追記 Swift4で
UINavigationBarにtitleっていうのはないですね
UINavigationItemの方を持って来ましょう。

@IBOutlet weak var naviItem: UINavigationItem!
なんでコード上でタイトル変える必要あったんだろうって気にはなりましたがw
naviItem.leftBarButtonItem?.isEnabled = false
isHiddenがないのでisEnabled使うと良いそうです。 今じゃほぼ完全にStoryBoard使わないマンになってしまいました。
コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

Related Memo...

記事を書くほどでもないけれどメモっておきたいこと

テスト投稿。

例えばiphone7 の画面サイズ

750 × 1334
半分375 × 667

iOS
more