如何将数据从导航栏上的右键传输到另一个ViewController?

时间:2019-09-30 21:33:00

标签: ios swift xcode uiviewcontroller uiimageview

我有一个带有两个按钮的导航栏:“上一步”和“添加”。单击添加按钮时,我需要将数据(UIImage)传输到第二个View Controller(ViewControllerFilters2)。我有“准备查询”功能,但它不起作用。当我单击“添加”时,我转到第二个控制器,但是imageView没有图像。

我在视图控制器上还有另一个按钮“应用”,对于此按钮,此功能有效,但对导航栏上的按钮不起作用。

我试图更改我的代码,但是我没有很多知识去做。而且不知道问题出在哪里。

我希望我的“添加”按钮具有与“应用”按钮相同的功能,即我想删除“应用”按钮并将其更改为“添加”按钮

override func viewDidLoad() {
    super.viewDidLoad()

    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "✔", style: .plain, target: self, action: #selector(addTapped))
}

@objc func addTapped() {

    let filterTwoController = self.storyboard?.instantiateViewController(withIdentifier: "filter2") as! ViewControllerFilters2
    self.navigationController?.pushViewController(filterTwoController, animated: true)

}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        let nextController = segue.destination as? ViewControllerFilters2
        nextController?.filteredImage = imageView.image!

}

3 个答案:

答案 0 :(得分:2)

@objc func addTapped() {

let filterTwoController = self.storyboard?.instantiateViewController(withIdentifier: "filter2") as! ViewControllerFilters2
filterTwoController.filteredImage = imageView.image!
self.navigationController?.pushViewController(filterTwoController, animated: true)
}

那应该解决您的问题,因为navigationController?.pushViewController与 无关。

答案 1 :(得分:0)

为了解决该问题,您应该执行以下操作:

  • 确保在情节提要板上创建了一个segue(从导航项到下一个视图控制器)。如果您不知道该怎么做,请检查this。您可以从情节提要中添加条形按钮,从而创建segue。

  • 当前,您正在呼叫navigationController?.pushViewController,它与segue无关(em),而您应该做的是呼叫:

    self.performSegueWithIdentifier ("SecondViewController", sender: self)

答案 2 :(得分:0)

更改此:

  componentDidMount() {
    axios.get('api/url')
      .then(response => response)
      .then(
        (result) => {
          this.setState({
            words: result.data.split('\na')
          });
        },
        (error) => {
          console.log(error)
        }
      )
  } 

对此:

@objc func addTapped() {

let filterTwoController = self.storyboard?.instantiateViewController(withIdentifier: "filter2") as! ViewControllerFilters2
self.navigationController?.pushViewController(filterTwoController, animated: true)
}

正如艾哈迈德·F(Ahmad F)所说的,您正在调用navigationController?.pushViewController,它与segue无关,因此您需要在按下视图控制器之前设置图像。