通过3个视图控制器传递数据[Swift 3.0 - Xcode]

时间:2017-06-27 22:09:47

标签: swift xcode uiviewcontroller delegates segue

我通过3个VC传递数据,所以最后我想实现从第三个VC到第一个VC的数据发送。我使用segue将数据从V2发送到V3,然后由代表将其从V3发送回V2。然后我试图通过segue将它从V2发送到V1,但我似乎无法收集V2中的数据(从V3发回)然后发送到V1。 来自V3的数据不会显示在V1中,但代码仍会运行。

有人可以帮忙吗?

来自V2和V3的代码:

V2:

import UIKit

class SecondViewController: UIViewController, thirdDelegate {
var GetBack: String?
var SendForward = [String]()
var Datacollect = [String]()
var Collect = [String]()
let ct = "Conner@2"
let new = "All@2"

@IBOutlet var Hinput: UITextField!

@IBOutlet var Ninput: UITextField!

@IBAction func MAP(_ sender: Any) {
    if Hinput.text != ""{
        performSegue(withIdentifier: "SegueSearch", sender: self)}
    }

@IBAction func Info(_ sender: Any) {
    performSegue(withIdentifier: "SegueInfo", sender: self)
}





func DataToPass(ArrayName: [String]) { //function from delegate
   Datacollect = ArrayName
    print(ArrayName)
}



override func prepare(for segue: UIStoryboardSegue, sender: Any?){
    if segue.identifier == "SegueSearch"{
      let thirdController = segue.destination as! ThirdViewController
        SendForward.append(Hinput.text!)
        SendForward.append(ct)
        thirdController.height = SendForward
        thirdController.delegate = self
    } else if segue.identifier == "SegueInfo" {
        let firstController = segue.destination as! ViewController
        if Datacollect.count != 0{
            Collect.append(Datacollect[1])
            Collect.append(Datacollect[0])}
        Collect.append(Ninput.text!)
        Collect.append(new)
        firstController.AllData = Collect

            }
    }

override func viewDidLoad() {
    super.viewDidLoad()
    print("check",Datacollect)
    // Do any additional setup after loading the view.
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

     }

  }

这是不起作用的部分吗?

func DataToPass(ArrayName: [String]) {
   Datacollect = ArrayName
    print(ArrayName)
}

V3:

    import UIKit

    protocol thirdDelegate{
func DataToPass (ArrayName: [String])
}

 class ThirdViewController: UIViewController {
var height = [String]()
var SendBack = [String]()
let ko = "Keith@3"


var delegate: thirdDelegate! = nil


@IBOutlet var Houtput: UILabel!

@IBAction func Home(_ sender: Any) {
    let StrH = String(height[0])
    SendBack.append(ko)
    SendBack.append(StrH!)
  delegate.DataToPass(ArrayName: SendBack)
  }



override func viewDidLoad() {
    Houtput.text = height[0]
    super.viewDidLoad()

    print(height)

}

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


}

0 个答案:

没有答案