我有UIViewController的数组,我想复制它。
var data: Array<UIViewController> = []
这是我的代码:
data = viewControllers.map{($0.copy() as! UIViewController)}
但是这段代码引发了异常,我无法确定问题是什么 任何人都可以指出问题可能是什么?
答案 0 :(得分:3)
UIViewController
不符合NSCopying
协议,这意味着无法复制。您可以尝试使用NSKeyedArchiver \ NSKeyedUnarchiver
将视图控制器存档到NSData
对象,然后将其取消归档。但它不会创建完全相同的副本,view
或childViewControllers
等属性很可能会丢失。
复制UI元素实际上是一种糟糕的方法。正确的解决方案是再次实例化视图控制器并手动设置所需的属性。