UINavigationController 如何在子视图中设置标题等

Posted

技术标签:

【中文标题】UINavigationController 如何在子视图中设置标题等【英文标题】:UINavigationController how to set title and etc in children views 【发布时间】:2018-08-23 12:43:57 【问题描述】:

我的应用结构:

firstView: UIViewControllerUINavigationController -- secondView UITabBarController 和几个UIViewControllers

启动应用,firstView:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 

    let vc  = ViewController()
    let navContr = UINavigationController(rootViewController: vc)

    self.window? = UIWindow(frame: UIScreen.main.bounds)

    self.window?.rootViewController = navContr
    self.window?.makeKeyAndVisible()
    return true

在 firtView 我点击按钮打开 secondView:

let vc = MyTabController()  // my UITabBarController
self.navigationController?.pushViewController(vc, animated: true)

启动第二个视图:

class MyTabController: UITabBarController 

    override func viewDidLoad() 
        super.viewDidLoad()
        let gen = MyViewController()
        let tabGen = UITabBarItem()
        gen.tabBarItem = tabGen
        tabGen.image = UIImage(named: "general")
        tabGen.title = "Все вопросы" 
        viewControllers = [gen]
        ....
    

在我的secondView 中,我想设置标题,在每个标签中设置UISearchControlleer。但是如果我写ViewController

navigationItem.title = "myTitle" 没有任何变化。我只看到按钮“返回”

Here's the screenshot

【问题讨论】:

【参考方案1】:

viewDidLoad() 方法

中设置这样的标题
self.title = "Your Title"

【讨论】:

@Joe 您需要在第一个 ViewController 中添加它,以便在按下后它会显示在第二个视图控制器的后退按钮上。 不太明白。在 MyTabViewControlers 的 viewControlers 中,我无法访问 navigationController。它的零。如果我在 didLoad() 中添加 "self.title = "Your Title"" 没有任何变化。 @Joe 因此,您需要将每个 TabviewController 与 Storyboard 中的导航控制器嵌入,如果您不需要在表格视图控制器中显示导航栏,则将其隐藏并设置标题。 我不使用情节提要。看来决定了。在 ViewControllers 中添加 tabBarController?.title 您首先需要将您的第一个 Vc 嵌入到 UINavigationController 中,然后您将在第一个视图控制器中拥有 navigationController

以上是关于UINavigationController 如何在子视图中设置标题等的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义 UINavigationController?

如何扩展 UIView 过去包含 UINavigationController

如何从 UINavigationController 隐藏 UINavigationBar?

UINavigationController如何设置标题

如何在 UINavigationController 中嵌入 UITabBarController?

iOS中如何自动回调UINavigationController的BackItem?