2017-01-29 3 views
1

Я действительно пытаюсь понять новый синтаксис для наблюдателей.Добавить наблюдателя и селектора в Swift 3

Можете ли вы помочь мне перевести это Swift 3.

nc.addObserver(self, selector: #selector(MapViewController.locationUpdated(_:)), name: LocationNotification.kLocationUpdated, object: nil) 
nc.addObserver(self, selector: #selector(MapViewController.locationAuthorizationStatusChanged(_:)), name: LocationNotification.kAuthorizationStatusChanged, object: nil) 
nc.addObserver(self, selector: #selector(MapViewController.locationManagerDidFailWithError(_:)), name: LocationNotification.kLocationManagerDidFailWithError, object: nil) 

Большое спасибо!

ответ

1

Запомнить сделать метод, взявшей на уведомления общественности (если его на другой контроллер).

И вы также должны добавить процессорный тег objc, чтобы объективные методы могли его вызвать.

Присвоить Наблюдатели: уведомления

nc.addObserver(
    self, 
    selector: #selector(received(notification:)), 
    name: LocationNotification.kLocationUpdated, object: nil 
) 

Ручки:

@objc public func locationUpdated(notification:Notification) { 
    //Do something 
} 

Надеется, что это помогает! :-)

1

Синтаксис код действителен для Swift 3. С помощью этого синтаксиса, я предполагаю, что ваш LocationNotification объект выглядит примерно так:

struct LocationNotification { 
    static let kLocationUpdated = Notification.Name(rawValue: "LocationUpdated") 
    static let kAuthorizationStatusChanged = Notification.Name(rawValue: "AuthorizationStatusChanged") 
    static let kLocationManagerDidFailWithError = Notification.Name(rawValue: "LocationManagerDidFailWithError") 
} 
Смежные вопросы