は、私は最近、この質問に出くわしたと私はそのかなり軽量だと思いますし、いくつかはそれを好むかもしれないと私は、後世のために、私自身の解決策を投稿しようと思いました。
まず、しかし、あなたのタブ項目を(私は私がに私の子供のコントローラを渡すUITabBarControllerサブクラスである)を作成する - 空の文字列にタブ項目のタイトルを設定します。
(もちろん、このソリューションは、比較的一般的な、埋め込みナビコントローラを備えたタブバーコントローラがあるOPシナリオに固有です)。
おそらく知っているように、UIViewControllerのタイトルを設定すると、関連するタブ項目にタイトルが表示されます。
タブ項目タイトルを設定せずにUIViewControllerタイトルを作成するには、新しいUILabelをビューコントローラのナビゲーション項目に追加します。タイトル表示。
私はそうのようなのUIViewControllerの拡張を作成巻き上げ:あなたが好きしかし
extension UIViewController {
func addNavItemTitle(resourceString: String, textColor: UIColor = UIColor.white) {
// Add title view ~ allows overriding title w/out showing it on tabBarItem
let titleLabel = UILabel()
titleLabel.text = NSLocalizedString(resourceString)
titleLabel.textColor = textColor
titleLabel.font = UIFont.viewTitle
titleLabel.sizeToFit()
self.navigationItem.titleView = titleLabel
}
}
はあなたのフォントや色をカスタマイズします。ラベルサイズ自体を測定したり、フレームを設定したりする必要はありません。
また、ローカライズされた文字列と文字列を直接設定する方が好きです。任意のタブの子コントローラで今すぐ
、タブ項目のタイトルを拾っていない間、私のビューコントローラのタイトルを設定するために - 私はちょうど良い場所は、あなたが持っているかもしれviewDidLoad
であるaddNavItemTitle(resourceString: "example.title")
を呼び出しますNSLocalizedString
への私の呼び出しに引数がないことにも気づいた。これは、リソース文字列と同じ文字列をコメントに使用する傾向があるためです。そこで、文字列を繰り返さずに呼び出しを単純化するグローバル関数を作成しました。そのよう
:
public func NSLocalizedString(_ key: String) -> String {
return NSLocalizedString(key, comment: key)
}
ありがとう、私はすでにそれを行った、それは動作していない UITabBarControllerからタイトルを隠すには? – SALEH
さて、xcodeトリックはうまくいっているはずです。アイテムの下に表示されるテキストを設定するだけです。非表示にして再び表示させる場合は、プログラムコードを使用する必要があります。 – caiomcg
前のコードはどこに追加できますか? – SALEH