UITabBarControllerのタブバーにリンクされている4つのUIViewControllerがあります。タブバー項目のタイトルをストーリーボードの外側とクラスの内側に設定する必要があります。
私はもう試した..
class MyViewController: UIViewController {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.title = NSLocalizedString(MyConstants.StringKeys.TabName, tableName: Constants.Strings.MyTable, comment: Constants.EmptyString);
}
}
これは呼び出されますが、タイトルは設定されません。 self.tabBarItem.title = "the title"と同じ
また、viewDidLoadでタイトルを設定しようとしましたが、View Controllerに移動した後にのみタイトルを更新します。
考え?
私はそれを理解しました、それはawakeFromNib()によって上書きされていたようです。
override func awakeFromNib() {
super.awakeFromNib()
self.title = NSLocalizedString(MyConstants.StringKeys.TabName, tableName: Constants.Strings.MyTable, comment: Constants.EmptyString);
}
Self.titleの割り当てをそこに移動すると、問題が修正されました。
View ControllerのviewDidLoad
プロパティを設定することにより、View Controller自体のタブタイトルをtitle
で設定できます。
title = "Number 0"
または、Tab Bar Controllerからタイトルを設定する場合、Tab Bar ControllerのviewDidLoad
で次のようにタイトルを設定できます。
tabBar.items?[0].title = "Number 0"
tabBar.items?[1].title = "Number 1"
私はさまざまな解決策を試してきましたが、私にとってうまくいったのは、viewWillAppear
のUITabBarController
メソッドにコードを設定するタブバーを追加することだけでした。 Tabバーのボタンが押されたときにのみ機能するため、私は各View Controllerで個別にそれを行いません:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let items = tabBar.items else { return }
items[0].title = "Title0"
items[1].title = "Title1"
items[2].title = "Title2"
items[3].title = "Title3"
}
以下は、すべてのviewController.Swiftファイルのソリューションです。次のコードを追加するだけです。
override func awakeFromNib() {
self.tabBarItem.title = "title"
self.tabBarItem.image = "image.png"
}
これは非常に簡単なawakeFromNibメソッドです。ViewDidLoadまたは任意のviewControllerDelegateメソッドでクリックまたは選択すると呼び出されるため、開始時にnibが単純に作成されると、任意のものを簡単に呼び出すことができます。これは非常に簡単な機能です。
ありがとう。
ViewControllers
に入れる前にプログラムでTabBarController
を作成する場合、これを試してください:
override init(style: UITableViewStyle) {
super.init(style: style)
self.title = "Title"
}
または、これがTableViewController
でない場合:
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
self.title = "Title"
}