2017-06-24 165 views
1

我有一個使用不同視圖控制器的註冊流程。我從ViewController1中的用戶獲取輸入,移動到下一個視圖控制器(ViewController2),並將數據傳遞到最後一個視圖控制器(例如ViewController5)。將數據傳遞給另一個ViewController而不移動到ViewController

的問題是,我可以通過我的數據到下一個視圖控制器,但我不能把它傳遞給最後一個視圖控制器,如:

// Move to Second View of the flow. 
let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: 「SecondViewController「) as! SecondViewController 
secondViewController.dataText = dataText! 
self.navigationController?.show(secondViewController, sender: nil) 

// Pass the data to the last View of the flow. 
let fifthViewController = self.storyboard?.instantiateViewController(withIdentifier: 「FifthViewController「) as! FifthViewController 
fifthViewController.dataText = emailText! 

dataText將傳遞給SecondViewController但不FifthViewController。我如何實現這一目標?

回答

2

你可以使用類並創建單獨的對象來存儲數據,並在第五個視圖控制器獲取

class SingletonClass { 
    var sharedInstance: SingletonClass { 
      struct Static { 
       static let instance = SingletonClass() 
      } 
      return Static.instance 
    } 
    var dataText : String = "" 
} 

現在你可以在這樣的單一對象存儲數據如下

let singleTon = SingletonClass() 
singleTon.sharedInstance.dataText = "store data" 

和使用像這樣在你的fifthViewController

let singleTon = SingletonClass() 
    print(singleTon.sharedInstance.dataText) 
+0

這正是我所需要的。很好,謝謝。 – waseefakhtar

0

在你Appdelegate.swift文件中像這樣

'var fifthViewController: FifthViewController?' 
在您的視圖控制器

從那裏,你想傳遞的數據

'let appDelegate = UIApplication.shared.delegate as! AppDelegate' 

'

appDelegate.fifthViewController = self.storyboard?.instantiateViewController(withIdentifier: 「 FifthViewController「) as! FifthViewController 
appDelegate.fifthViewController.dataText = emailText! 

'

創建FifthViewController的實例

當你想要推送FifthViewController時使用Appdelegte refrence像這樣的控制器

'self.navigationController?.pushViewController(appDelegate.fifthViewController!, animated: true)' 
+0

只有當我想從發送數據的位置推送視圖控制器時,這應該起作用。我不想這樣做。 – waseefakhtar

相關問題