やっとわかった。Swift始めてもうそこそこたったのにこれだけはなかなか解決できず・・・。
基本的にあんまりStoryboardを使わない人なんですが、NavigationBarとSegueに関してだけは使っていて、あんまり使わないからこそなかなか覚えも悪いと・・・。
Storyboard上に配置したNavigationBarのタイトルを変更したい時ですが、基本は
ここにタイトルを書きますよね。
しかしこのタイトルを場合分けして変更したい!ってこともあると思います。
ちょっと色々あって見難いですが、storyboardを開いた状態で、右上の丸が2つ重なっているマークを押します
すると2画面になるので、そこから右側の画面を変更する時は
次に
(ここにきてちょっと別のプロジェクトの画面で申し訳ないです・・・)
そして繋げた後は、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使わないマンになってしまいました。
コメントはありません。
現在コメントフォームは工事中です。