所以我在这里有一个简短的问题......
我有一个 View Controller 对象的实例,我们称它为 viewCon1
,它上面放置了几个 subview ,每个 subview 都具有独特的属性。我们称它们为 sub1
、sub2
和 sub3
。现在,我以编程方式添加这些 subview 中的每一个,在以下范围内做一些事情:
//create the subviews
TaskUIButton *sub1 = [[TaskUIButton alloc] init];
TaskUIButton *sub2 = [[TaskUIButton alloc] init];
TaskUIButton *sub3 = [[TaskUIButton alloc] init];
//add them to viewCon1
[viewCon1.view addSubView:sub1];
[viewCon1.view addSubView:sub2];
[viewCon1.view addSubView:sub3];
现在这里是我不知道如何继续的地方。我需要创建另一个名为 viewCon2
的 View Controller 对象,并使其与 viewCon1
完全相同,并附加相同的(尽管是分开的) subview 。例如,假设 viewCon1
的 sub1
的标题为 “foo”
,我需要 viewCon2
也有一个相同的 subview ,标题为 "foo"
,等等。
有什么简单的方法可以解决这个问题吗?
如果有任何见解,我将不胜感激!
最佳答案
UIViewController 和 UIView 都没有实现 NSCopying 协议(protocol),所以复制这些对象不仅仅是一步过程。总体思路是创建相关类的新实例并复制原始对象的配置。
因为您已经有了为 View Controller 配置 View 的代码,所以最简单的事情就是再次调用该方法来创建 View Controller 的第二个实例。我知道您的代码现在可能无法设置为执行此操作,因此您可能需要重构以实现此目的。
根据您上面的评论,听起来您可能正在 View 中存储一些状态,而不是让 View 反射(reflect)应用程序中存储的数据。它可能有助于确定哪些信息决定了 View 的布局,并确保数据在应用程序的数据模型中得到正确表示。如果你能做到这一点,你应该能够简单地基于相同的数据创建一个新的 View Controller 并获得相同的布局。
关于Objective-C 复制 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6495420/