(一) manager写法总结
按照数据的流向编号
1.继承自网络访问工具类
2.分页属性
【依据具体情况添加此项】
总页数,当前页码索引,总条数
3.数据存储容器(一般是结构体数组)
关于结构体,是一个独立文件,根据后台返回的字段列表进行编码,用json 进行初始化
4.回调通知
通知控制器数据获取完毕,成功或者失败,一般采用闭包
闭包书写比较麻烦,可以预先用typealias实现声明
5.网络访问方法(依据具体的场景增减函数)
调用网络工具类方法,具体看是否需要分页,数据成功取回以后,对数据存储对象进行元素填充,并通过闭包进行回调
(二) 控制器之间引用
在开发中经常会用到一个控制器去引用另外一个控制器的view,如下图,有个UIViewController作为一个大容器,在每次滑动的时候需要加载一个新的UITableViewController。需要注意的点,首先是将UITableViewController的tableView添加UIViewController的view。
后来发现数据不显示,只有一个空的tableView,说明UITableViewController已经有了tableView,后来代码进行了修改
分析:代码中的vc属于一个临时变量,在方法执行完以后就销毁,但是由于addSubview方法对tableView持有,所以并未释放掉,但vc已经销毁,数据不存在
解决方案:其实问题找到以后,解决方法就好说了,无非就是对vc进行强引用,有两种解决方法
创建一个成员变量对vc 进行强引用,适用于单个控制
对于当前场景,多个控制器,可以采用addChildController的方式
(三)关于UITableViewController 的tableView 与 UIViewController 的view
在UITableViewController有一个主要的UIView,用于记录控制器内子控件,或者所有子控件的容器,但是在打印UITableViewControllerview 和 tableView 发现二者内存地址一致,即在UITableViewController中tableView即相当于UITableViewController的view的作用,在添加子控件addSubview的时候,既可以用view也可以用tableView
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。