无法在swift中的viewcontrollers之间传递值

时间:2016-12-15 17:20:54

标签: ios arrays swift uiviewcontroller

我有两个viewcontrollers,我必须将值从第二个vc传递到第一个vc。也就是说,必须将字符串nameText附加到我的firstvc中的数组nameArray中。这就是我在secondvc中所做的事情:

let homeViewController: HomeViewController = storyboard?.instantiateViewController
(withIdentifier: "homeViewControllerIdentifier") as! HomeViewController
homeViewController.nameArray.append(nameText)

我在上面的最后一个语句中设置了一个断点^并且po homeViewController.nameArray.first我得到了值。但是当我在控件返回到第一个vc时也这样做,并且我尝试使用该数组时,它表示它是nil。我想在这一行,homeViewController.nameArray.append(nameText),我在数组中添加一个值?这有什么问题?提前致谢。

1 个答案:

答案 0 :(得分:1)

您的代码无法正常工作的原因,因为您正在实例化旧的viewcontroller并创建它的新实例。

您需要在此处创建委托/协议。类似的东西:

    protocol ViewDelegate{
       func updateArray()
    }

    class Class1: UIViewController{

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let vc = segue.destinationController as! Class2
        vc.delegate = self
    }
     }    
    extension Class1: ViewDelegate {

    func updateArray(){
    // update array here
       }
    }

    class Class2: UIViewController{
    var delegate: ViewDelegate!

     func updatearrayhere(){
        delegate.updateArray()
       }    

    }