Swift

swift中的通知中心传值的使用

2016-07-17  本文已影响2515人  coder小鹏

1、创建通知,最好在viewDidLoad的方法中创建


override func viewDidLoad() {

super.viewDidLoad()

let center = NSNotificationCenter.defaultCenter()//创建通知

center.addObserver(self, selector: #selector(SecondViewController.receiveValue(_:)), name: "passValue", object: nil)//单个值得传递

center.addObserver(self, selector: #selector(SecondViewController.receive(_:)), name: "pass", object: nil)//多个值得传递

}

//接收通知并相应的方法

//单个值得回调方法

func receiveValue(info:NSNotification)  {

print(info.object)

}

//多个值得回调方法

func receive(info:NSNotification)  {

print(info.userInfo)

let dic = info.userInfo as! NSDictionary

print(dic.objectForKey("name"))

print(dic.objectForKey("sex"))

print(dic.objectForKey("age"))

}

2、发送通知


//通知中心传值

//----------单值传递 -------

let center = NSNotificationCenter.defaultCenter()

center.postNotificationName("passValue", object: "value", userInfo: nil)

//-----------多个值得传递-------

let dic :[String : NSObject]  = [

"name":"张三",

"sex" : "男",

"age" : "17"

]

center.postNotificationName("pass", object: nil, userInfo: dic)

3、移除通知,由那个控制器创建由那个控制器移除,谁创建谁移除,最好在deinit方法中移除,如果通知不能及时的移除掉,当下次进入该控制器时会重复创建NSNotificationCenter,在对应方法中发送通知给上一次创建的通知,但是上一个通知所在的控制器已被干掉,所以这时候就会报错


deinit{

//移除所有的通知(在哪里创建的通知,就在哪里移除)

NSNotificationCenter.defaultCenter().removeObserver(self)

//移除指定的通知

 NSNotificationCenter.defaultCenter().removeObserver(self, name: "passValue", object: nil)

NSNotificationCenter.defaultCenter().removeObserver(self, name: "pass", object: nil)

}

上一篇 下一篇

猜你喜欢

热点阅读