[英]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.