如何避免在带有Swift 4的iOS 11中使用带有刷新控件的@objc?

问题描述 投票:0回答:2

我将我的项目从Swift 3升级到Swift 4,在迁移过程中,它在我的代码中插入了一堆“@objc”注释。我希望摆脱它们以避免生成任何Objective-C入口点。其中一个我无法弄清楚如何摆脱,使用刷新控件。这是违规代码:

let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(MyController.handleRefresh(refreshControl:)), for: .valueChanged)
self.table.refreshControl = refreshControl;

问题是它似乎使用了#selector。如何在没有选择器的情况下实现刷新控制?

ios ios11 swift4 uirefreshcontrol
2个回答
5
投票

我希望摆脱他们

你不能,你需要停止想要。 #selector是一个Objective-C功能,因此您必须将操作方法​​显式公开给Objective-C。 (以前你已经暗中暴露过它;现在你必须说出你的意思。)


0
投票

您可以使用@IBAction而不是@objc两者都使用反射,但Swift4与@IBAction没有问题

© www.soinside.com 2019 - 2024. All rights reserved.