首页 文章

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

提问于
浏览
0

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

  • 初始ViewController的类型为SWRevealViewController

  • 自定义从SWRevealViewController到NavigationController的segue

  • 从导航控制器到RearTV(一个UITableViewController,静态单元格中有几个按钮),有一个“根视图控制器与RearTV”的关系

  • 从RearTV上的一个按钮到VC2(一个嵌有容器视图放在它上面的UIViewController),有一个“显示”到VC2的segue

  • 从VC2中的容器视图中有一个“拆分视图控制器”的嵌入式搜索

5.1从拆分视图控制器到导航控制器(从右到右),存在“主视图控制器与导航控制器”的关系

5.1.2从导航控制器(从右到右)到根控制器,存在“根视图控制器与根控制器1”的关系

5.1.3从根控制器(名为“Root Controller1”)到导航控制器(“下面的那个”)有一个segue“showDetail1 to Navigation Controller”

5.2从拆分视图控制器到导航控制器(“下面的一个”)有一个关系“导航控制器的详细视图控制器”

  • 从导航控制器("the one underneath) to Detail View Controller there is a segue "根视图控制器到详细视图控制器“) .

在RootController1和DetailViewController中我都试图显示 Headers ,但它什么都没显示 .

//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 回答

  • 1

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

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

    而不是:

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

    这仅在我在控制器中包含结构时才有效 .

相关问题