开发中经常使用到页面间的传值!所以,今天特意写一篇文章来分享给大家!有经验的可以跳过哈!
下面设置 ViewController 和 ViewController2 两个类。
正向传值 :--->直接设置子viewController2的属性 。页面从A跳到B , 参数也是从A传到B。
传递方式:---->需要从A传到B什么参数,就给B设置一个什么属性,在A中将B的对象创建出来的时候给B的对象的属性赋值,在B页面上 通过self的指针去获取传过来的参数
- 设置一个新闻 id。
在ViewController 里赋值(传参)。其实@"正向传值(参),新闻ID";-->是可以用 参数代替的!(就像新闻列表,点击某cell,就把对应的参数比如ID传过去,然后另个界面根据传入的ID值,进行网络请求,得到对应的新闻内容!显示在界面!)
2、 反向传值(传参)?---使用代理
页面从B跳到A 参数也是从B传到A。
传递方式:---->需要从B传到A什么参数,就给A设置一个什么属性,在B中设置代理,然后,在A中将B对象创建出来的时候,让A 成为 B的代理。
- 其中的self 是ViewControl ,VC2 是 ViewControl2,因为,self 的作用是指向当前对象!,所以,这里把ViewControl 的值赋给了,VC2.delegate,相当于,ViewControl类了。
- 最后,在B 中用:self.delegate.label.text = @"反向传参"; ==》等价于ViewControl.label.text = @"反向传参";
- 注意:实际开发中的参数--》@"反向传参" ---是不能这样写死的!,要用一个灵活的变量去代替的。
- label 是 ViewControl 的属性。 这里的 self.delegate 就变成了ViewControl。
3、单例传值? -- 场景:用户登陆、购物
先创建一个单例类!-- UserInfo
- 实现:
在登陆界面 获取用户名和密码:
在另一个界面,直接创建对象,直接获取值,不用重新赋值了:
- 通知也是可以传值的!
- 通知传值也是可以的,而且很好用,主要是后面的那个字典,存放参数而已。虽然开发中经常使用,当是经常会被滥用!