うるおいらんど

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ももっとちゃんと活用しなきゃなぁ・・・

Additional Notes追記

Swift4で

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

@IBOutlet weak var naviItem: UINavigationItem!

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

naviItem.leftBarButtonItem?.isEnabled = false

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

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

Comments

コメントはありません。

現在コメントフォームは工事中です。