したがって、_AppDelegate didFinishLaunchingWithOptions
_のOptionsViewController
としてrootViewController
がある場合...
_let rootVC = OptionsViewController()
let navigationController = UINavigationController(rootViewController: rootVC)
navigationController.navigationBar.barTintColor = .white
navigationController.navigationBar.isTranslucent = false
navigationController.navigationBar.tintColor = .black
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window!.rootViewController = navigationController
self.window?.makeKeyAndVisible()
_
...viewDidLoad()
でこれを行うと、OptionViewController
のタイトルの設定が機能します。
_ title = "Route Options"
_
しかし、OptionsViewController
をナビゲーションスタックにプッシュすると、タイトルが表示されません。
つまりrootViewController
のAppDelegate
として別のビューで開始した場合:
_ let rootVC = HomeViewController()
let navigationController = UINavigationController(rootViewController: rootVC)
navigationController.navigationBar.barTintColor = .white
navigationController.navigationBar.isTranslucent = false
navigationController.navigationBar.tintColor = .black
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window!.rootViewController = navigationController
self.window?.makeKeyAndVisible()
_
そして、HomeViewController
で、OptionViewController
を次のようにプッシュします。
_ let optionsVC = OptionsViewController()
navigationController?.pushViewController(optionsVC, animated: true)
_
タイトルが表示されません!
タイトルを表示するために管理した唯一の方法は、(OptionViewController
で)実行することです
_navigationController?.navigationBar.topItem?.title = "Route Options"
_
しかし、それは中央ではなく、戻るボタンとして表示されます。これは私が望むものではありません。
誰かがタイトルを、navigationControllerスタックにプッシュされたときにナビゲーションバーの真ん中にあるように設定する方法を教えてもらえたら、すばらしいでしょう。
AppDelegate.Swift
_class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let rootVC = HomeViewController()
let navigationController = UINavigationController(rootViewController: rootVC)
let barAppearance = UINavigationBar.appearance()
barAppearance.barTintColor = UIColor.blue
barAppearance.tintColor = UIColor.white
barAppearance.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window!.rootViewController = navigationController
self.window?.makeKeyAndVisible()
return true
}
_
HomeViewController.Swift
_class HomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, DestinationDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let optionsVC = OptionsViewController()
self.definesPresentationContext = false //else going to try and present optionVC on homeVC when in optionVC
navigationController?.pushViewController(optionsVC, animated: true)
}
tableView.deselectRow(at: indexPath, animated: true)
}
}
_
OptionsViewController.Swift
_class OptionsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource,
DestinationDelegate, SearchBarCancelDelegate,UISearchBarDelegate,
CLLocationManagerDelegate {
override func viewDidLoad() {
self.title = "Route Options"
}
_
タイトルに基づいてここに来る他の人のために、IBのViewControllerクラスを適切なSwiftファイルに設定することを忘れないでください。
それをした後、私は問題なくタイトルを設定することができました
self.navigationItem.title = "my title"
または
self.title = "my title"
NavigationItem.titleを目的の値に設定する必要があります。画像が必要な場合は、navigationItem.titleViewを設定します。
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "Your title here"
}
最初にUINavigationBar
colorとtext colorを設定する必要があります。これをdidFinishLaunchingWithOptions
で試してください。
_let barAppearance = UINavigationBar.appearance()
barAppearance.barTintColor = UIColor.blue
barAppearance.tintColor = UIColor.white
barAppearance.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
_
バックボタンの後に文字列を削除したい場合は、これらも追加します
_let barItemAppearace = UIBarButtonItem.appearance()
barItemAppearace.setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), for:UIBarMetrics.default)
_
viewDidLoad()
にタイトルを設定するか、
_ override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.title = "Your Title"
}
_
それを試してみてください:
HomeViewController
内:
let optionsVC = OptionsViewController()
navigationController?.viewControllers = [optionsVC]
そして、あなたのOptionsViewController
:
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.isTranslucent = false
navigationItem.title = "Your Title"
}
Objective-Cを使用すると、タイトルが表示されず、次のシーンに戻ると、タイトルが[戻る]ボタンの横に表示されるという問題もありました。
理由はよくわかりませんが、そのシーンの相対ViewControllerをObjective-CではなくSwiftでプログラミングすることで解決しました。
その後、次のコマンドを使用するだけで十分です。
self.title = "My Title"
そして、ifステートメントやその他の方法論を使用して、プログラムで必要なものを書くことができました。
多分これはObjective-Cでこの問題を抱えている人に役立つかもしれません。
以下の行を追加して、ナビゲーション項目のタイトルを設定します
self.title = "Title 1"