Ios 通过单击子视图中的按钮更改UIView显示

Ios 通过单击子视图中的按钮更改UIView显示,ios,Ios,我在CreateAccountViewController中初始化了UIView import UIKit class CreateAccountViewController: UIViewController { @IBAction func btnAdd(sender: AnyObject) { let subview = NSBundle.mainBundle().loadNibNamed("Slide", owner: self, options: nil)?

我在CreateAccountViewController中初始化了UIView

import UIKit

class CreateAccountViewController: UIViewController {

    @IBAction func btnAdd(sender: AnyObject) {
        let subview = NSBundle.mainBundle().loadNibNamed("Slide", owner: self, options: nil)?.first as! Slide
        self.addview.addSubview(subview)

    }
    @IBOutlet weak var addview: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
当我点击UIView幻灯片中的btn按钮时,我想为这个UIView添加一个新的UUBiew 我实现如下并获得

1 addview错误=零

有人能帮我吗

import UIKit

class Slide: UIView {
    @IBOutlet weak var txtTen: UILabel!
    @IBOutlet weak var imageHinhAnh: UIImageView!

    @IBAction func btn(sender: AnyObject) {
        let subview = NSBundle.mainBundle().loadNibNamed("Test", owner: self, options: nil)?.first as! Test
        let Storyboard=UIStoryboard(name: "Main", bundle: nil)
        let scr=Storyboard.instantiateViewControllerWithIdentifier("CreateAccount") as! CreateAccountViewController
        scr.addview.addSubview(subview)

    }
    @IBOutlet weak var txtNoiDung: UILabel!
}

我假设您已经为
幻灯片
测试
创建了XIB文件。您可以使用协议委托方法来实现代码。创建幻灯片视图的协议方法,通过创建代理,您可以通过调用相同的代理协议方法访问视图控制器

class CreateAccountViewController: UIViewController, SlideDelegate {

    @IBOutlet weak var addview: UIView!

    // Create Global Variable to access in delegate method of SlideDelegate
     var slideView: Slide?

    @IBAction func btnAdd(sender: AnyObject) {
        slideView = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)![0] as? Slide
        slideView?.delegate = self
        self.addview.addSubview(slideView!)
    }

    func add(view: Test) {
        if slideView != nil {
            slideView?.addSubview(view)
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
创建如下协议

protocol SlideDelegate: class {
    func add(view: Test)
}


class Slide: UIView {

    @IBOutlet weak var txtTen: UILabel!
    @IBOutlet weak var imageHinhAnh: UIImageView!
    @IBOutlet weak var txtNoiDung: UILabel!

    weak var delegate: SlideDelegate?

    @IBAction func btn(sender: AnyObject) {
        let subview = Bundle.main.loadNibNamed("Test", owner: self, options: nil)![0] as! Test

        if let selfDelegate = delegate {
            // Call delegate method which will notify your view controller to add sub view
            selfDelegate.add(view: subview)
        }
    }
}