关于和UITableView的注意点

UITableView是我们最常用的视图,在做这个东西的时候,我遇到的几种情况:
1,我们往往写不确定cell高度的情况下,使用高度自适应

 _tableView.estimatedRowHeight =44;
 _tableView.rowHeight =UITableViewAutomaticDimension;

2,当底部显示的不完全的时候,我们可以设置tableview的视图的减少一部分

 _tableView =[[UITableView alloc] initWithFrame:CGRectMake(0, 45, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)-64];

3,cell重用的机制,就是为了每次刷新或者下拉的时候重新加载的时候不需要进行二次实例化,可以大大的减少内存的开销

 static NSString *identifer =@"cell";
    DrugStoreTableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:identifer];
    if (!cell) {
        cell =[[DrugStoreTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifer];
    }
    
    [cell setInfo:self.arrlist[indexPath.row]];

4,当我们写代理的时候,除了我们功能需要的代理实现之外,不必要的代理不需要实现,减少内存的开销
5,对于入门级的初学者,对于自定义的cell的加载比较迷茫:
两种cell的加载方式:
1,纯代码的加载:

static NSString *identier =@"identier";
   

   InfomationTableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:identier];
   
   if (!cell) {
       cell =[[InfomationTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identier];
       
   }

2,xib方式的加载:

    [self.tableView registerNib:[UINib nibWithNibName:@"InvoiceCell" bundle:nil] forCellReuseIdentifier:@"InvoiceCell"];

    InvoiceCell *cell =(InvoiceCell *)[tableView cellForRowAtIndexPath:indexPath];

6,在用tableview 的时候我们难免会用到UINavigationController,对于它只要理解了它的图层关系,一切都不会太难,今天就简单的讲一下关于它的用法;
对于navigationItem其实它可以看作是navigationBar的展现形式,navigationBar包含的left,right,backBarButtonItem等展现就是靠navigationItem,所以我们每次添加左右按钮的时候都是直接用navigationItem
我把中间的title的显示自定义了

    self.navigationItem.titleView =self.titleView;
    self.edgesForExtendedLayout =UIRectEdgeNone;//视图遮盖问题


7,对于数据的加载,我们会直接用类封装,然后直接赋值给cell,对于数据的封装我们会用到

- (instancetype)initWithInvoice:(NSDictionary *)dect
{
    self=[super init];
    if (self) {
//这样写的好处可以不用一个个的进行复制,这个可以快速的赋值

    [self setValuesForKeysWithDictionary:InfoDIC];
//而不用这样一个个的赋值,如果数据多的话,影响开发效率而且也容易出错

        self.invoiceType =dect[@"invoiceType"];
        self.invoiceContent=dect[@"invoiceContent"];
        self.invoiceName =dect[@"invoiceName"];
        self.companyName =dect[@"invoiceHeadTitle"];
        self.invoiceContentId =dect[@"invoiceContentId"];
        self.invoiceHead =dect[@"invoiceHead"];

        self.switchType = [dect[@"isSlect"] boolValue];
    }

    return self;
}


第一次写随笔,只是按自己平时的想法写的,如果有什么不足欢迎指正,往后会单独写一篇关于UINavigationController的学习心得,减少别人和我一样走弯路,希望对你们有帮组

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 前言 由于最近两个多月,笔者正和小伙伴们忙于对公司新项目的开发,笔者主要负责项目整体架构的搭建以及功能模块的分工。...
    CoderMikeHe阅读 27,178评论 74 270
  • “坚持梦想就会与众不同” 这句话一直以来也是我的座右铭,这也是我个人用二十年人生经历悟出的一个道理。迄今为止,...
    行者L阅读 449评论 0 2
  • 苏轼,字子瞻,号东坡居士,世人称苏东坡、苏仙。四川眉山市人,北宋著名文学家、书法家、画家。 父亲和弟弟 父亲苏洵是...
    seafruit阅读 463评论 0 1
  • 越发觉得坚持写感赏非常重要,只有这样才能保持一颗平和的心态,保持对的能量。 周六女儿草草做了一天的计划后说还...
    江边的亭子阅读 235评论 0 2