Swift如何在推送后保留导航栏按钮项

时间:2017-06-01 23:13:19

标签: ios swift view controller push

在我的根视图控制器中,我设置了一个包含图像的条形按钮项目数组,并将它们分配给右边的条形按钮。

当我按下一个视图控制器时,我的导航栏会重置并只显示一个后退按钮。

保留导航栏的方法,因为它在根视图控制器上设置,以便显示在所有页面上?

2 个答案:

答案 0 :(得分:0)

正如user1046037所说,您可以在准备segue时设置项目按钮。

示例:

let helpViewController = HelpViewController(nibName: "HelpViewController", bundle: nil)
let someLeftButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.refresh, target: self, action: "someAction")
helpViewController.navigationItem.leftBarButtonItem = someLeftButton
helpViewController.navigationItem.leftItemsSupplementBackButton = true
navigationController?.pushViewController(helpViewController, animated: true)

这是保留左按钮项目和后一项目。

helpViewController.navigationItem.leftItemsSupplementBackButton = true

如果要在多个Viewcontrollers中使用相同的按钮,可以创建一个BaseViewController来设置按钮及其行为。

class AHBaseViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()

    configureNavigationBar()
    // Configure Common status bar if you want too.
  }

  func configureNavigationBar() {
    let someLeftButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.refresh, target: self, action: "someAction")
    navigationItem.leftBarButtonItem = someLeftButton
    navigationItem.leftItemsSupplementBackButton = true
  }
}

然后在viewControllers中继承它,你想要显示按钮。

class HelpViewController: AHBaseViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

答案 1 :(得分:-1)

当您使用Push在视图控制器之间进行切换时,您将获得默认的“水平幻灯片”导航动画。尝试“现在模态”或“作为弹出”。