创建一个viewcontroller并将现有VC的标签和按钮添加到新的VC Swift iOS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个viewcontroller并将现有VC的标签和按钮添加到新的VC Swift iOS相关的知识,希望对你有一定的参考价值。

我正在swift制作一个form builder,我希望像textFields,Labels,Buttons等元素分配给新创建的VC,要么应该在新VC中复制或动态创建。

这是我试图通过单击Save按钮获取新创建的VC的子视图

我希望保存多个表单,因为我需要保存很多文本按钮标签才能查看它可以保存在新的viewcontroller中,新的VC应该以编程方式创建,因为我点击了保存按钮。像这样可以创建多个VC,因为我想要更多的表单和字母我可以通过其他TablView中的表单名称检索它们然后单击一个单元格,相关的View-VC将出现带有文本按钮标签

@IBAction func saveAction(_ sender: Any)
{
    let formFirstVC : UIViewController = UIViewController()
    formFirstVC.view.addSubview(getFormView)
}

这是我在Scroll视图中创建的现有VC中的图像。现在我希望应该有一个新的视图控制器,其中应该按照我在此表单中创建的所有元素textFields / labels / buttons生成。

enter image description here

我想要的是

enter image description here

答案

试试这段代码:

//创建UIVIEW的扩展名

extension UIView
{
    func copyView() -> UIView?
    {
        return NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self)) as? UIView
    }
}

然后在第二个视图控制器的ViewDidLoad中添加:

 let view = UIView(frame: CGRectMake(0, 0,375,625));
 view.backgroundColor = UIColor.greenColor();
 let label = UILabel(frame: view.frame);
 label.text = "test";
 label.backgroundColor = UIColor.whiteColor();
 view.addSubview(label);

 let copyView = view.copyView();
 let copyLabel = copyView?.subviews[0] as! UILabel;
 view.backgroundColor = UIColor.blackColor();
 label.text = "abc";

这将复制标签。您可以使用文本字段,按钮等替换标签。

以上是关于创建一个viewcontroller并将现有VC的标签和按钮添加到新的VC Swift iOS的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有情节提要的情况下创建 ViewController 并将一个设置为另一个的委托?

ViewController创建过程使用storyboard

自动旋转动态 UIView 控制器

通过 iCarousel 将信息传递给多个 viewController

iOS:MVVM-C ViewController 超类

在 Swift 的外部方法中获取当前的 ViewController