2016-05-30 2 views
2

Я новичок в Swift, я использую видеоуроки. Но в текущем уроке у меня проблема, и я не могу ее решить сам.Swift #selector issue

Проблема связана с новым синтаксисом #selector в NSNotificationCenter, я использовал старый синтаксис, и он не работал.

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() 
    } 

} 

Пожалуйста, проверьте Screenshot: How should I rewrite the yellow code (with selector) to make it work?

Заранее спасибо

+1

Это также хорошо работает:. NSNotificationCenter.defaultCenter() addObserver (самость, селектор: #selector (self.onPostsLoaded (_ :)), название: "postsLoaded", объект: ноль) – Mannopson

ответ

4

Попробуйте это:

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

Не забудьте заменить YourViewController по имени контроллера, надеюсь, что это помогает вам.

3

Try заменяя

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