Swift - 在另一个 ViewController 中访问容器视图内的按钮

Swift - access UIButton inside ContainerView in another ViewController

我在从另一个 ViewController.

访问 ContainerView 中的 UIButton 时遇到问题

如果用户点击 button,我的 ViewController 中应该会出现一个 SubView。我尝试在我的 ViewController 文件中拖动 button 来创建 @IBAaction func tapped() 但这不起作用。

它只在 ContainerView.swift 文件中有效。但是我不能在那里创建我的 Subview...

希望您能解决我的问题,感谢您的帮助!

import UIKit

class ContainerViewController: UIViewController {




    override func viewDidLoad() {
        super.viewDidLoad()


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


    @IBAction func addButtonTapped(_ sender: Any) {
        print("add Button")         
}

您可以使用 NotificationCenter 和委托来实现此目的。这是使用 NotificationCenter

实现它的方法

在您的 ContainerViewController 中,您可以 post 按钮点击通知

@IBAction func yourBtnTap(sender : UIButton) { 
NotificationCenter.default.post(name: Notification.Name("myBtnTapped"), object: nil)
} 

在您的 CurrentViewController 中,您必须先注册才能接收此通知。所以在你的 viewDidLoad 中,这样做:

NotificationCenter.default.addObserver(self, selector: #selector(self.myBtnTappedAction(notification:)), name: Notification.Name("myBtnTapped"), object: nil)

现在在您的 CurrentViewContoller 中创建 myBtnTappedAction 函数,只要点击按钮就会调用该函数。

@objc func myBtnTappedAction(notification : Notification) { 
// now you can perform all your actions here. this function will be called everytime the button in the container view is tapped.
}

您可以使用 parent 属性 在您的 ContainerView 中到达您的 ViewController。所以,在你的 ContainerView class:

if let parentVC = self.parent as? ViewController {
     parentVC.showSubView() // your method to show the sub view.
}