为什么导航栏中没有显示标题?斯威夫特3

时间:2017-06-06 12:37:57

标签: swift3 uinavigationcontroller uinavigationbar uisplitviewcontroller uinavigationitem

DetailViewControllerRootController1中的标题未显示。此外,当在DetailViewController中按下后退按钮时,它会弹出到RearTV,而不是弹出到RootController1。谁能告诉我如何自定义UIViewControllers上显示的导航栏的标题?

  1. 初始ViewController的类型为SWRevealViewController

  2. 从SWRevealViewController到NavigationController的自定义segue

  3. 从导航控制器到RearTV(一个UITableViewController,静态单元格中有几个按钮),有一个关系是"根视图控制器与RearTV"

  4. 从RearTV上的一个按钮到VC2(一个嵌有容器视图放在它上面的UIViewController),有" Show" segue to VC2

  5. 从VC2中的容器视图中有一个嵌入式搜索"拆分视图控制器"

  6. 5.1从拆分视图控制器到导航控制器(从右到右),主视图控制器与导航控制器的关系为"

    5.1.2从导航控制器(从右到右)到根控制器有一个关系是"根视图控制器与根控制器1"

    5.1.3从根控制器(名为&#34; Root Controller1&#34;)到导航控制器(&#34;下面的那个),有一个segue&#34; showDetail1到导航控制器&#34; < / p>

    5.2从拆分视图控制器到导航控制器(&#34;下面的控制器),有一个关系&#34;详细视图控制器到导航控制器&#34;

    1. 从导航控制器(&#34;下面的那个)到Detail View Controller,有一个segue&#34;根视图控制器到Detail View Controller&#34;。
    2. 在RootController1和DetailViewController中我都试图显示标题,但它什么也没显示。

      //centers the title of the navigation bar in all view controllers
      struct CustomNavBar {
      static func center(title: String) -> UILabel {
          let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
          titleLabel.text = title
          titleLabel.adjustsFontSizeToFitWidth = true
          titleLabel.textAlignment = NSTextAlignment.center
          return titleLabel
        }
      }
      
        override func viewDidLoad() {
            super.viewDidLoad()
      
           //attempt 1 to customize title of navigation bar
           self.navigationController?.navigationItem.titleView =  CustomNavBar.center(title: "some title")
      
           //attempt 2 to customize title of navigation bar
                 self.navigationItem.titleView =  CustomNavBar.center(title: "some title")
      }
      

      // firstImage first

      // secondImage second

      // thirdImage third

1 个答案:

答案 0 :(得分:1)

尝试在视图控制器中输入以下内容:

self.navigationController?.navigationBar.topItem?.titleView = CustomNavBar.left(title: "some title")

而不是:

self.navigationController?.navigationItem.titleView =  CustomNavBar.center(title: "some title")

仅当我在控制器中包含结构时才有效。