最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

iOS开发之更新数据UIViewController如何"刷新"页面

iOS 天狐 13034浏览 1评论

e...其实这个是扫盲贴,也是基础,又有人会发现本帖是个脑残贴...

问题1.是当我们UIViewController的self.view上有很多乱起八糟的View啊 自定义控件的时候,由于数据是异步回来或者哪个事件响应后才请求网络数据

问题2.有人想有没有tableview的类似的方法比如reloadData之后就刷新了tableview

问题3.又有人想,能不能调用[self.view setNeedDisplay]; 进行刷新view

固定的控件

比如我的self.view上有个jobLabel用来显示职位名称,请求回来的数据中有个对应的字段job,那么所谓的刷新就是直接找到jobLabel的引用,直接赋值text了

如果连接了IBOutlet输出口或者是代码创建的,如下

动态添加的控件

因为某种动态添加的控件又没有存引用,但是确实存在在superView中

还想进行赋值刷新,那么使用viewWithTag 和事先设置好的tag来进行

或者根据想要获取控件的特征,遍历superview,获取到 想干什么干什么...

这种情况在老式的cell复用中经常遇见,比如

多个固定数量控件

比如我有100个UILabel在self.view上,请求回来的数据对应有100条(由于网络请求可能会有多次,创建多个UILabel在请求前后已经不是问题的重点了)

创建时候

赋值

上面是使用viewWithTag来获取指定tag的UILable,创建的时候可以把所有UILable放在一个数组或字典中,赋值时候直接获取,赋值就行了

多个动态添加的控件

如果我的UILabel个数完全是根据请求回来的数据量创建多个,并且有很多变量,比如位置,内容,颜色等等

那么使用之前创建好的UILabel就满足不了需求啦,解决方案很简单,那就是自己实现一个类似UITableView的reloadData方法,每次网络请求回来,都会先移除所有之前创建的控件,然后在动态添加

移除数组中所有子数据

或者基本的方法,for遍历移除,顺便判断是不是要移除的类型

动态添加

小小示例(自定义控件)

 

写在最后

所谓的"刷新"其实就行想把数据绑定到控件上而已,动态的数据动态的控件才叫真正的刷新

本文不仅仅适用于UIViewController,任何View,封装的控件其实都是适用的

 

转载请注明:天狐博客 » iOS开发之更新数据UIViewController如何"刷新"页面

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 虽然说很基础,但是分享一下挺好的.
    kelicheng9年前 (2016-06-13)回复