繁体   English   中英

未从 Tabbar controller 调用委托方法

[英]Delegate method not called from Tabbar controller

我在 tabBarController 中创建了一个导航栏按钮,我想在这个按钮上调用委托方法。

/// Delegate
protocol DataExportDelegate {
   func generateCSVFile()
}

class TabbarController: UITabBarController {

var exportDelegate: DataExportDelegate?

override func viewDidLoad() {
    super.viewDidLoad()
 
 ///**barbutton**
let barButtonItem = UIBarButtonItem(
       image: UIImage(named: "icon"),
       style: UIBarButtonItem.Style.plain,
       target: self, action: #selector(onClick(_:)
       )
    )
    self.navigationItem.rightBarButtonItem = barButtonItem
  }

@objc func onClick(_ sender: UIBarButtonItem) {
    exportDelegate?.generateCSVFile()
  }
}

/// ViewController
 class viewController: UIViewController, DataExportDelegate {

var tabbar_Controller: TabbarController = TabbarController()


override func viewDidLoad() {
    super.viewDidLoad()
    
    tabbar_Controller.exportDelegate = self
}

 func generateCSVFile() {
   print("Delegate called")
 }

}

这个

var tabbar_Controller: TabbarController = TabbarController()

创建一个不同于呈现的 1 的新实例,因此替换

tabbar_Controller.exportDelegate = self

(self.tabBarController as! TabbarController).exportDelegate = self

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM