你如何在Swift 3中创建自定义通知?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

在Objective-C中,自定义通知只是一个普通的NSString,但在Swift 3的WWDC版本中并不明显。

提问于
用户回答回答于

你也可以使用这个协议

protocol NotificationName {
    var name: Notification.Name { get }
}

extension RawRepresentable where RawValue == String, Self: NotificationName {
    var name: Notification.Name {
        get {
            return Notification.Name(self.rawValue)
        }
    }
}

然后将你的通知名称定义为enum你想要的任何位置。例如:

class MyClass {
    enum Notifications: String, NotificationName {
        case myNotification
    }
}

并使用它

NotificationCenter.default.post(name: Notifications.myNotification.name, object: nil)

通过这种方式,通知名称将与基金会分离Notification.Name。如果实施Notification.Name更改,你将只需修改协议。

用户回答回答于
extension Notification.Name {

    static let onSelectedSkin = Notification.Name("on-sekected-skin")
}

然后你就可以像这样使用它

NotificationCenter.default.post(name: .onSelectedSkin, object: selectedSkin)

扫码关注云+社区

领取腾讯云代金券