UITableView 使用小结

原创 2015年11月20日 10:07:07

1.对于 NumberOfSection  NumberOfRowInSection,我们可以设置为其最多数,仅仅需要用两个方法来确定是否显示TableView.

#pragma mark UITableViewDataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

    return _shopDetailModel ? 8 : 0;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    if (section == 0) {

        return 3;

    }

    if (section == 1) {

        return 3;

    }

    if (section == 3) {

        return 4;

    }

    if (section == 4) {//优惠信息

       return self.shopDetailModel.couponInfo.count + 2;

       

    }


    if (section == 7) {

        return 2;

    }

    return 1;

}


2.通过每个row的高度来让cell显示与否。也就是说逻辑写在heightForCell这边,集中处理数据逻辑。

  case 1://预约

        {

            if (_shopDetailModel && (_shopDetailModel.service & MWShopServiceYuDing))

            {

                if(indexPath.row == 0){

                    height = 45;

                }else if(indexPath.row == 1){

                    if (_shopDetailModel.ydInfo) {

                        height = 105;

                    }

                }else if(indexPath.row == 2){

                    if (_shopDetailModel.dingdanInfo) {

                        height = 68;

                    }

                }

            }

        }

            break;


3.在写cellforIndexPath时,就是对应高度是0,它还是会调用cellforindexpath方法,所以heightforcell和cellforindexpath逻辑是一样的,要注意用空cell处理else情况。

if (_shopDetailModel && (_shopDetailModel.service & MWShopServiceYuDing))

            {

                if(indexPath.row == 0){

                    cell = [tableView dequeueReusableCellWithIdentifier:kImgLabelImgCellIdentifier];

                    if (!cell) {

                        cell = [[AccessoryDefaultTableCell alloc]initWithReuseIdentifier:kImgLabelImgCellIdentifier];

                    }

                    [self  configureYuyueCell:(AccessoryDefaultTableCell *)cell atIndexPath:indexPath];

                }else if(indexPath.row == 1){

                    cell = [tableView dequeueReusableCellWithIdentifier:kYDBriefCellIdentifier];

                    if (!cell) {

                        cell = [[YDBriefCell alloc]initWithReuseIdentifier:kYDBriefCellIdentifier];

                    }

                    [self  configureYuyueInfoCell:(YDBriefCell *)cell atIndexPath:indexPath];

                }else if(indexPath.row == 2){

                   cell = [tableView dequeueReusableCellWithIdentifier:kYDDingDancellIdentifier];

                    if (!cell) {

                        cell = [[YDDingDanCell alloc]initWithReuseIdentifier:kYDDingDancellIdentifier];

                    }

                    [self  configureYDDingDanCell:(YDDingDanCell *)cell atIndexPath:indexPath];

                }

            }else{

                cell = [tableView dequeueReusableCellWithIdentifier:kEmptyIdentifier forIndexPath:indexPath];

            }

4.如果按照2 ,3步骤写,cellfor代码会比较乱繁杂,也可抽出部分逻辑判断到configcell中,如下,这样cellfor中就可以不用判断此逻辑。如果有更好的建议,可以讨论一下。

//配置预约时间点行

- (void)configureYuyueInfoCell:(YDBriefCell *)cell atIndexPath:(NSIndexPath *)indexPath{

    if (_shopDetailModel.ydInfo) {

        cell.timeCollectionView.dataSource = self;

        cell.timeCollectionView.delegate = self;

        cell.selectionStyle = UITableViewCellSelectionStyleNone;

    }

}


5.参考美味的shopdetailviewcontroller

相关文章推荐

uitableview使用

  • 2014年04月06日 14:30
  • 657KB
  • 下载

UISCrollView与UITableView嵌套使用

  • 2016年02月15日 14:39
  • 91KB
  • 下载

Xcode控件使用笔记四:UITableView-自定义Cell

UITableView其他简单设置:

iOS-使用表格视图UITableView

  • 2015年10月24日 09:46
  • 4.09MB
  • 下载

UITableView的基本使用二(性能优化)

在使用UITableView的时候,会有很多的cell数据产生,如果数据量很大,而且用户在界面上操作频繁的时候,就会造成性能下降,那么这个时候我们要考虑使用缓存机制,也就是像Java中的缓存机制一样,...

Asp.net中Frameset的使用小结(2)

  • 2008年11月13日 16:02
  • 46KB
  • 下载

UITableView的使用

  • 2014年10月10日 16:36
  • 77KB
  • 下载

iOS 基于MVVM设计模式练习UITableView使用 —— HERO博客

iOS 基于MVVM设计模式练习UITableView使用。

UITableView 快捷菜单的使用Demo

  • 2013年04月28日 17:09
  • 69KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UITableView 使用小结
举报原因:
原因补充:

(最多只允许输入30个字)