【问题标题】:Add another back button to a Navigation Controller将另一个后退按钮添加到导航控制器
【发布时间】:2018-04-03 20:10:11
【问题描述】:

我有一个导航控制器,所以当我单击主视图上的按钮时,它会打开另一个带有“返回”导航项的视图。

我要做的是在右侧的第二个视图中添加另一个项目,因此该视图应该有一个“后退”项目,已经在工作,以及一个新的“编辑”项目,它与后退按钮,但我可以获得 prepareForSegue 函数来运行一些补充代码。

我怎样才能做到这一点?

这是我尝试过的:

我正在使用两个导航控制器,因为如果我的第二个视图没有嵌入到导航控制器中,我将无法添加“编辑”项。 所以这是可行的,我有两个“返回”和“编辑”项目,但我不知道如何设法获得与“编辑”项目上的“返回”项目相同的行为,我尝试了 segues 但它没有按预期工作。 请注意,我在第一个视图中谈到的按钮没有显示在编辑器中,也没有显示在它的 segue 中,我是通过编程方式完成的。

【问题讨论】:

  • prepareForSegue 用于推送 ViewController 而不是 PopViewController,您在这里要问的是,如果我说对了,如何将数据发送回之前的 ViewController?-
  • 您能否描述一下您一般要解决的问题是什么,而不是询问实施可能不优雅的特定行为?

标签: ios swift uiviewcontroller uinavigationcontroller uibarbuttonitem


【解决方案1】:

edit button 被点击时,您可以简单地调用popViewController(animated:)

class ViewController: UIViewController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()
        let editItem = UIBarButtonItem(title: "Edit", style: .plain, target: self, action: #selector(editButtonTapped(_:)))
        self.navigationItem.rightBarButtonItem = editItem

    }

    @objc func editButtonTapped(_ sender: UIBarButtonItem)
    {
        self.navigationController?.popViewController(animated: true)
    }
}

故事板:

【讨论】:

  • 感谢它完美地工作,当解决方案很简单时,我尝试了一些过于复杂的东西。现在我不明白的最后一件事是如何通过编辑器添加这个编辑按钮?在第二个视图上简单的拖动没有任何作用,这就是我使用第二个导航控制器的原因,我可以在其中放置这个编辑按钮。
猜你喜欢
  • 2012-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 2017-10-18
  • 2011-11-29
  • 1970-01-01
相关资源
最近更新 更多