OC仿写网易云时出现的问题
第一次写demo,遇到了特别多的问题,同时也学到了很多东西,先看看仿写的网易云的界面。
好了开始说我的问题:
1.代码规范问题,在写代码的过程中一定要好好注意代码规范问题,要不然不仅写出来很丑而且在检查的时候会很难,同时也可能会出现重复定义等问题,比如定义了两个相同的button,当我们引用的时候就会造成错误引用,比如你定义的是一个,引用的却是另一个,所以我们一定要注意代码规范问题!
2.关于cell的复用
首先我们必须知道的两种方法:注册和未注册
首先未注册的方法:
这个方法由于没有注册,所以在引用的时候会先判断cell是否为空,如果空则定义。根据它具有的独特的标识符来扫描
//尝试获得可以复用的单元格。但不一定获得到。得不到返回nil
UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"yep"];
//如果没有获得到
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"yep"];
}
注册的方法就是系统会自动进行一个判空的过程,省去了我们去手动加条件判空的操作。
[self.tableView registerClass:[MyTableViewCell class] forCellReuseIdentifier:@"yep"];
MyTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"yep" forIndexPath:indexPath];
另外我们一定要注意的是,尽量尽量千万不要把东西建在cell里边,要不然在复用的时候就会出现问题,经过学长学姐的指导,我衷心的建议大家把所有的button,scrollview等等都不要建在这个函数里面,记得在对应的.h文件中加相关的属性。
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
}
然后建好之后,当我们需要用的时候,直接进行引用就行了,这样写又简单又准确。
所以关于cell的用法真的很重要,大家一定要多练多写。
就是pushViewController的用法,这个的作用对象不能是自己,应该是你想转到哪个页面,哪个页面 就是作用对象。
总结
第一次写demo,写的真的很拉垮了,不找借口,希望接下来可以把基本的东西掌握扎实一点,然后多练,多写,感谢学长学姐的帮助,也希望所有人都可以加油