一、把应用管理这个案例,给大家总结一下: 1.今天,经过一天的努力,我们终于把这个九宫格应用管理案例的所有功能都实现了吧, 我们一起来,一边看效果,一边来总结, 2.大家先想一下,当我们实现这个效果,按照最终的那个版本来想一下,这个代码是什么样的一个思路, 1)第一步,是不是要加载那个plist数据吧, 因为加载plist数据,要把它当作模型来加载,所以说,这个时候,我们是不是要新建模型, 新建模型,这个模型当中有几个属性,取决于我们这个字典里面是不是有几个键值对, 这个模型里面,必须得封装两个根据字典创建模型那个方法吧, 所以说,我们第一步,就是懒加载,但是在懒加载之前,先得创建模型,模型里面,两个属性,两个方法,然后实现这两个方法,是不是根据字典创建模型啊, 2)这个模型有了以后,接下来,在控制器里面,就开始实现懒加载, 在控制器里面,找到这个属性的懒加载代码, 1> 在这个里面,我们首先拿到这个plist文件的路径,首先把这个字典数据放到一个数组里面, 2> 然后,接下来,循环这个字典数组,把里面的每一个字典,是不是根据字典,创建一个模型对象, 3> 然后,把这个模型对象,放到我们的这个模型的数组里面, 4> 最后,把这个模型数组,给了这个apps这个属性,就OK了 这就是我们的懒加载, 3)当懒加载好以后,紧接着,我们当控制器的View加载完毕以后,是不是要创建一个一个的应用,所以说,我们在控制器的viewDidLoad方法里面,怎么办呢,就开始创建View,创建View的时候,因为你有几个应用,我就要创建几个View,是不是首先要写个for循环, 在for循环里面, 1> 首先,拿到当前你这个模型数据, 2> 然后呢,我们是不是写了个自定义View,根据xib来加载这个View, 3> 加载好这个View以后,紧接着,最后,把这个View加到我们的父控件里面, 4> 把这个模型数据,设置给这个View, 5> 然后在这个View的模型这个属性里面,里面通过一个setter方法,重写setter方法,把模型数据是不是设置给这个子控件了, 6> 然后,因为我们这个View,要按照九宫格的方式来排列,所以说,在这个for循环里面,是不是把我们九宫格的基本计算方式是不是先列出来, 首先是,固定设置好我们每一个应用的大小, 然后,计算marginTop,marginX,marginY,把这几个边界计算好以后, 然后,在for循环里面,就要计算出当前我们这个单元格所在的列的索引,当前我们这个单元格所在的行的索引, 把这些都算好以后,接下来计算X和Y,设置我们这个View的frame,然后把View加到我们的大View里面, 是不是这个View就加载进来了, 然后在这个for循环里面,基本就四步: 1)第一步,获取模型数据, 2)第二步,创建View, 3)第三步,把View加到控制器的View里面,设置frame, 4)第四步,设置View的model属性,把模型和View结合, 是不是就这么几步啊, 然后呢,控制器里面的代码,基本就这些, 4.然后,紧接着,就是我们这个xib,怎么来创建, 新建一个xib,拖一个View进来,为什么要拖一个View, 因为我们这里面,要的是一个一个的View吧,所以说,拖一个View进来, 然后,设置View的子控件,然后,这些子控件,将来我们要访问它,要设置数据,所以说,要通过拖线的方式,在这个自定义View里面,是不是要写几个属性来引用那几个子控件吧, 因为,你要给这几个子控件拖线,并且要写一个自定义的类来表示这个View,所以说,我们这里要新建一个类,继承自UIView,这就是我们xib里面那个View,对应的我们的自定义View类吧, 在自定义的View的类里面,我们封装这么一个方法,+ (instancetype)appView,把通过xib创建View的代码,封装到我们这里,这样的话,在外界,是不是直接调这个类方法,就ok了, 这样的话,就封装好这个方法了, 然后,怎么让你自定义的这个View类,和xib上这个View相关联呢, 就是找到xib里面这个View,在它的class属性里面,是不是给它设置,和你那个自定义View的类相关联, 这样的话,你自定义的View类,就和我们xib里面这个View,它俩就相关联在一起了, 然后在运行的时候,就可以根据,就会创建这个类型的对象了吧, 5.来,大致回忆一下,分几步, 1)第一步,创建模型, 2)第二步,懒加载, 3)第三步,viewDidLoad里面写for循环, 1> 创建View, 2> 获取模型数据, 3> 设置frame坐标, 4> 设置数据, 是不是就这么几步啊, 这几步里面,用到了外面的两个东西, 1)一个是,自定义的xib,这是自定义的View, 2)一个是,自定义的模型, 好了,以上就是我们对这个案例的总结