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.
}
我在从另一个 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.
}