2016-08-23 57 views
0

我有UIViewController的數組,我想複製它。如何複製UIViewController的數組

var data: Array<UIViewController> = [] 

這是我的代碼:

data = viewControllers.map{($0.copy() as! UIViewController)} 

但這個代碼拋出異常,我真的不能告訴是什麼問題。
任何人都可以指出問題可能是什麼?

+1

它拋出了什麼異常? – Santosh

回答

3

UIViewController不符合NSCopying協議,這意味着它不能被複制。您可以嘗試使用NSKeyedArchiver \ NSKeyedUnarchiver將視圖控制器歸檔爲NSData對象,然後將其解除歸檔。但它不會創建完全相同的副本,像viewchildViewControllers這樣的屬性很可能會丟失。

複製UI元素實際上是一種不好的方法。正確的解決方案是再次實例化視圖控制器並手動設置所需的屬性。