目标选择器无法在Swift3上运行

时间:2016-11-21 18:03:01

标签: ios swift swift3

我遇到问题"拉到刷新"。我使用内置n=100的{​​{1}},UIViewController目标设置如下:

UITableView

当我拉 - 有一个例外:

UIRefreshControl

2 个答案:

答案 0 :(得分:5)

阅读几个教程。

在iOS10 UIRefreshControl中添加了TableViews。

我在homeproject中使用的简单代码:

private let refreshControl = UIRefreshControl()

    override func viewDidLoad() {

        tableView.refreshControl = refreshControl
        refreshControl.addTarget(self, action: #selector(ViewController.refreshData(sender:)), for: .valueChanged)

        fetchFixtures()

    }

    func refreshData(sender: UIRefreshControl) {
        fetchFixtures()

        refreshControl.endRefreshing()
    }

答案 1 :(得分:4)

在Swift 3中,默认情况下不再忽略第一个参数。在Swift 2中,您的刷新方法签名为refresh(_:),现在它是refresh(sender:),因此Selector("refresh:")无法正常工作。

我建议您在第一个参数中添加下划线,使其看起来像func refresh(_ sender: AnyObject)

我还建议你使用新的Selector语法,它应该看起来像这样#selector(refresh(_:))

如果您使用新的Selector语法(您应该),我认为您也可以保留第一个参数并使其看起来像#selector(refresh(sender:))