Swift #selector问题

时间:2016-05-30 08:05:06

标签: swift selector nsnotificationcenter

我是Swift的新手,我正在使用视频课程。但在目前的课程中,我遇到了一个问题,我无法自己解决。

问题在于NSNotificationCenter中新的#selector语法,我使用旧的语法,但它没有用。

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self

        NSNotificationCenter.defaultCenter().addObserver(self, selector: "onPostsLoaded:", name: "postsLoaded", object: nil)

        tableView.reloadData()
    }

    func onPostsLoaded(notif:AnyObject) {
        tableView.reloadData()
    }

}

请查看屏幕截图:How should I rewrite the yellow code (with selector) to make it work?

提前致谢

3 个答案:

答案 0 :(得分:4)

试试这个:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourViewController.onPostsLoaded(_:)), name: "postsLoaded", object: nil)

不要忘记用控制器的名称替换YourViewController,希望它可以帮到你。

答案 1 :(得分:3)

尝试替换

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.onPostsLoaded(_:)), name: "postsLoaded", object: nil)

答案 2 :(得分:1)

我猜上面的答案是最好的,但不要忘记" _"在targetAction中,因为您使用Swift 3.0,请在此处查看我的答案:

https://stackoverflow.com/a/39537901/3143890