如何从扩展中调用选择器?
How can I call a selector from an extension?
我已使用扩展程序将刷新控制器添加到 table 视图:
extension UITableViewController {
func addRefreshController() {
self.refreshControl = UIRefreshControl()
self.refreshControl?.tintColor = UIColor.init(colorFromHexaString: VIOLET_COLOR_HEX_STRING)
self.refreshControl?.attributedTitle = NSAttributedString(string: "Pull to refresh", attributes: [NSAttributedStringKey.foregroundColor : UIColor.init(colorFromHexaString: VIOLET_COLOR_HEX_STRING)])
refreshControl.addTarget(self, action: #selector(self.refresh), for: UIControlEvents.valueChanged)
tableView.addSubview(refreshControl!)
}
}
显示此错误:
Value of type 'UITableViewController' has no member 'refresh'
但是选择器 func
在 TableViewController
中。
class TableViewController: UITableViewController {
override func viewDidLoad() {
addRefreshController()
}
@objc func refresh () {
}
}
那么,如何从扩展中调用选择器?
如果您想访问 TableViewController
的选择器,您应该扩展自己的 class、TableViewController
而不是 UITableViewController
。
extension TableViewController { [...] }
我已使用扩展程序将刷新控制器添加到 table 视图:
extension UITableViewController {
func addRefreshController() {
self.refreshControl = UIRefreshControl()
self.refreshControl?.tintColor = UIColor.init(colorFromHexaString: VIOLET_COLOR_HEX_STRING)
self.refreshControl?.attributedTitle = NSAttributedString(string: "Pull to refresh", attributes: [NSAttributedStringKey.foregroundColor : UIColor.init(colorFromHexaString: VIOLET_COLOR_HEX_STRING)])
refreshControl.addTarget(self, action: #selector(self.refresh), for: UIControlEvents.valueChanged)
tableView.addSubview(refreshControl!)
}
}
显示此错误:
Value of type 'UITableViewController' has no member 'refresh'
但是选择器 func
在 TableViewController
中。
class TableViewController: UITableViewController {
override func viewDidLoad() {
addRefreshController()
}
@objc func refresh () {
}
}
那么,如何从扩展中调用选择器?
如果您想访问 TableViewController
的选择器,您应该扩展自己的 class、TableViewController
而不是 UITableViewController
。
extension TableViewController { [...] }