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

ios--UITableview的基本使用方法

1.ViewController需要实现两个delegate(UITableViewDelegate/UITableViewDataSource),在.h文件中继承它们;并实现3个UITableVie...
  • mhw19901119
  • mhw19901119
  • 2013年04月03日 12:21
  • 4330

iOS 最全的UITableView的各种使用方法

UITableView: 1、重用代理 @interface ViewController : UIViewController 2、定义 _tableView = [[UITableVi...
  • QueenlySun
  • QueenlySun
  • 2016年11月02日 17:08
  • 2773

IE 10浏览器使用心得:界面简洁、功能很强大

IE 10浏览器的功能还是非常强大的,启动速度快,简洁到以展现内容为主导以及更好的兼容性,IE10与IE9一样建立在硬件加速图形工具软件之上,而且IE10将继续支持HTML5和CSS3。为了让Wind...
  • linux_loajie
  • linux_loajie
  • 2013年01月22日 09:35
  • 3173

UITableView的禁用重用机制

UITableView的重用机制 iphone重用机制是苹果为了实现大量数据显示而采用的一种节省内存的机制,比如在UITableView和ScrollView 等地方。为什么要“可重用”...
  • u011118092
  • u011118092
  • 2016年07月07日 11:36
  • 635

(十三)UITableView数据模型化

多组数据的TableView的设计方法:每一组用一个模型对象表示。 模型包含了标题数据和行数据的数组,在控制器里包含模型的组来对各个模型进行初始化。 在tableView相应的方法中,从控制器的模...
  • xyt8023y
  • xyt8023y
  • 2015年02月06日 10:17
  • 559

IOS控件学习之UITableView代码实例详解

.h文件 // // ViewController.h // UITableView // // Created by on 13-9-24. // Copyright (c) 2013年 ...
  • xuqiang918
  • xuqiang918
  • 2013年09月25日 09:43
  • 2404

使用字符串总结

在C语言中,字符串表示为字符的数组。字符串中的最后一个字符是空字符(’\0’),这样,操作字符串的代码就知道在哪里结束,官方将这个空字符定义为NUL。C++包含一些来自C语言的字符串操作函数,它们在头...
  • tf_apologize
  • tf_apologize
  • 2016年11月21日 16:00
  • 450

IOS开发UI进阶之UITableView二

一 自定义等高cell–frame 新建一个继承自UITableViewCell的子类,比如XMGTgCell @interface XMGTgCell : UITableViewCell @end ...
  • ab20514
  • ab20514
  • 2015年09月05日 21:09
  • 366

UITableView高级用法

一、UITableView概述   UITableView继承自UIScrollView,可以表现为Plain和Grouped两种风格,分别如下图所示: 其中左边的是Plain风格的,右边...
  • WoAiLuoWenXin
  • WoAiLuoWenXin
  • 2014年11月27日 10:25
  • 596

UITableView 横向滚动(二)

在UITableView 横向滚动(一)中实现了简单的横向滑动效果,这里将横向滑动的类简单封装一下: 直接上代码: 1、MyHorizonalTableViewController.h#imp...
  • zhang_Red
  • zhang_Red
  • 2015年06月03日 15:25
  • 2833
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UITableView 使用小结
举报原因:
原因补充:

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