在自身内添加导航栏

Posted

技术标签:

【中文标题】在自身内添加导航栏【英文标题】:Add navigation bar within self 【发布时间】:2016-09-21 12:48:29 【问题描述】:

我希望在 UIViewController 中添加 UINavigationBar。我知道我可以在 Storyboard 中添加一个 导航栏,我也可以使用 segue 触发它,也可以通过添加 width 手动执行它和身高。我不想手动完成,而是想在类内部完成,而不添加 heightwidth导航栏的行为很自然,就好像它是由 segue 触发的一样。所以像 self.navigationController 这样的东西会起作用。 self.navigationController 将呈现 UINavigationBar

还有我需要添加的任何其他内容。

【问题讨论】:

【参考方案1】:

将此代码用于 swift2.X 用于 swift3 使用此链接 Adding Navigation Bar programmatically ios

 // Create the navigation bar
    let navigationBar = UINavigationBar(frame: CGRectMake(0, 0, self.view.frame.size.width, 44)) // Offset by 20 pixels vertically to take the status bar into account

    navigationBar.backgroundColor = UIColor.whiteColor()
    navigationBar.delegate = self;

    // Create a navigation item with a title
    let navigationItem = UINavigationItem()
    navigationItem.title = "Title"

    // Create left and right button for navigation item
    let leftButton =  UIBarButtonItem(title: "Save", style:   UIBarButtonItemStyle.Plain, target: self, action: "btn_clicked:")
    let rightButton = UIBarButtonItem(title: "Right", style: UIBarButtonItemStyle.Plain, target: self, action: nil)

    // Create two buttons for the navigation item
    navigationItem.leftBarButtonItem = leftButton
    navigationItem.rightBarButtonItem = rightButton

    // Assign the navigation item to the navigation bar
    navigationBar.items = [navigationItem]

    // Make the navigation bar a subview of the current view controller
    self.view.addSubview(navigationBar)


  func btn_clicked(sender: UIBarButtonItem) 
  // Do something
 

【讨论】:

虽然这项工作存在设备旋转问题。尽管我可以使用 bar barItems 来使用约束,但标题约束成为另一个问题。 这应该是可能的,因为可以通过在用户界面中拖动它来添加它,但我想以编程方式进行。

以上是关于在自身内添加导航栏的主要内容,如果未能解决你的问题,请参考以下文章

Electron菜单栏&导航栏隐藏

不会将导航项添加到 xcode 中的导航栏

在开源UOJ的导航栏中添加新页面链接

我们如何使用 Flutter 中的底部导航栏触发有状态小部件以通过导航重建自身?

无法将 UISearchController 搜索栏添加到导航栏中,并且未调用委托方法

停止导航栏与表格一起滚动