【问题标题】:Swift how to preserve navigation bar button items after pushSwift如何在推送后保留导航栏按钮项
【发布时间】:2017-06-01 23:13:19
【问题描述】:

在我的根视图控制器中,我设置了一组带有图像的条形按钮项,并将它们分配给右侧的条形按钮。

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

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

【问题讨论】:

  • prepareForSegue中设置目标视图控制器的右侧导航项。

标签: ios swift view controller push


【解决方案1】:

正如 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

如果您要在多个 Viewcontroller 中使用相同的按钮,您可以创建一个 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
  }
}

然后在要显示按钮的视图控制器中继承它。

class HelpViewController: AHBaseViewController {

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多