2016-12-15 175 views
0

我有兩個視圖控制器,我必須將值從第二個vc傳遞到第一個vc。也就是說,必須在數組0123'中追加字符串nameText,這在我的firstvc中。這是我在secondvc正在做:無法在swift中傳遞視圖控制器之間的值

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

我把一個破發點中的最後一條語句以上^做po homeViewController.nameArray.first我得到的值。但是當我做同樣的控制回到第一個VC時,我嘗試使用這個數組,說它是nil。我在這一行認爲,homeViewController.nameArray.append(nameText),我在數組內添加一個值?這有什麼問題?提前致謝。

+1

您正在實例化第一個視圖控制器。 – paulvs

+0

那麼有沒有其他方法可以做到這一點? @paulvs –

回答

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() 
     }  

    } 
相關問題