您正在创建一个全新的WebViewController,但您应该有实际WebViewController 的参考。您可以创建一个委托连接,例如:
protocol CardViewControllerDelegate: AnyObject {
func didClickSaveButton()
}
然后让它在CardViewController中设置:
class CardViewController {
....
weak var delegate: CardViewControllerDelegate?
....
}
并让WebViewController 实现:
extension WebViewController: CardViewControllerDelegate {
func didClickSaveButton() {
// handling code
print("save button tapped")
tapCallback?()
}
然后,在WebViewController中创建CardViewController时设置委托:
func showCardViewController() { // or whatever the name is
let cardVC = CardViewController() // or however you load it
cardVC.delegate = self
present(cardVC, animated: true) // or however you show it
}
最后,连接到代理:
@IBAction func backBtn(_ sender: Any) {
delegate?.didClickSaveButton()
}
如果视图控制器是在 Storyboard 中制作的,并且它们之间存在 segue,则可以在 prepareForSegue 中设置委托,例如:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let cardViewController = segue.destination as? CardViewController {
cardViewController.delegate = self
}
}