#include "cocos-ext.h"
using namespace cocos2d::extension; class TableViewTestLayer: public CCTableViewDataSource, public CCTableViewDelegate
{
public:
///////////////////////////////////////////////////////////////////////////////////////////
// CCScrollViewDelegate
virtual void scrollViewDidScroll(CCScrollView* view){}
virtual void scrollViewDidZoom(CCScrollView* view){}
// CCTableViewDelegate
//点击响应
virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell){}
//设置按下时高亮
virtual void tableCellHighlight(CCTableView* table, CCTableViewCell* cell){}
//设置松开是取消高亮
virtual void tableCellUnhighlight(CCTableView* table, CCTableViewCell* cell){}
//循环使用某个单元格
virtual void tableCellWillRecycle(CCTableView* table, CCTableViewCell* cell){}
// CCTableViewDataSource
//每一项的大小
virtual CCSize tableCellSizeForIndex(CCTableView *table, unsigned int idx);
//每一项的内容
virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);
//一共多少项
virtual unsigned int numberOfCellsInTableView(CCTableView *table);
/////////////////////////////////////////////////////////////////////////////////////////// protected:
CCTableView *mTableView;
};

  

//
mTableView = CCTableView::create(this, CCSizeMake(616, 551));
//设置左右滑动 或上下
mTableView->setDirection(kCCScrollViewDirectionVertical);
//
mTableView->setPosition(ccp(12, 851-770));
mTableView->setDelegate(this);
//index0123...由上到下放置
mTableView->setVerticalFillOrder(kCCTableViewFillTopDown);
mBg->addChild(mTableView); //
CCTableViewCell* TableViewTestLayer::tableCellAtIndex(CCTableView *table, unsigned int idx)
{
CCTableViewCell *pCell = table->dequeueCell();
if (! pCell )
{
pCell = new CCTableViewCell();
pCell ->autorelease(); //添加该项内容、、、、
}
else
{
//该项已有内容,服用之前滑出可视区域的tablecell,要么全部移除重新添加,要么自己更新、、、、
}
}

  

值得注意的是:

1. tableView在setVerticalFillOrder时会reloadData;

void CCTableView::setVerticalFillOrder(CCTableViewVerticalFillOrder fillOrder)
{
if (m_eVordering != fillOrder) {
m_eVordering = fillOrder;
if (m_pCellsUsed->count() > 0) {
this->reloadData();
}
}
}

所以--->要是在tableCellAtIndex中使用tableView的parent,记得先parent->addchild(tableveiw);再setVerticalFillOrder

2.tableView在create的时候,就会预加载一下tableCell,调用updateCellAtIndex,下面是调用CCTableView::create的调用堆栈

所以--->要是在updateCellAtIndex中涉及到tableView的parent调用,程序就会蹦掉、

所以最好将create出来的tableView保存为成员变量,然后在updateCellAtIndex中判断一下

	CCTableViewCell *cell = table->dequeueCell();

	if (cell == NULL)
{
cell = new CCTableViewCell();
cell->autorelease();
}
else
{
cell->removeAllChildren();
} //如果不是create保存的成员变量(即此时调用的updateCellAtIndex是在create是预加载调用的),则不要涉及到parent的操作。
if (table != mTableView) return cell;

  

CCTableView的使用和注意事项的更多相关文章

  1. jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧

    这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...

  2. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  3. TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...

  4. app开发外包注意事项,2017最新资讯

    我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...

  5. favicon.ioc使用以及注意事项

    1.效果 2.使用引入方法 2.1 注意事项:(把图标命名为favicon.ico,并且放在根目录下,同时使用Link标签,多重保险) 浏览器默认使用根目录下的favicon.ico 图标(如果你并没 ...

  6. ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  7. 【原】Masonry+UIScrollView的使用注意事项

    [原]Masonry+UIScrollView的使用注意事项 本文转载请注明出处 —— polobymulberry-博客园 1.问题描述 我想实现的使用在一个UIScrollView依次添加三个UI ...

  8. 《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。附:网友制作的类库说明(CHM)

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  9. 《连载 | 物联网框架ServerSuperIO教程》- 6.并发通讯模式开发及注意事项

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

随机推荐

  1. java动态代理与老式AOP实现

    JAVA的动态代理 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会 ...

  2. [iOS微博项目 - 2.1] - 获得新浪授权接口

    A.如何获得新浪的授权接口 登陆新浪的开放平台 注册新浪账号 创建应用 获得应用id和请求地址 查阅相关API 关联需要进行测试的账号   1.登陆开放平台 http://open.weibo.com ...

  3. POJ1061青蛙的约会(扩展欧几里得)

    #include <cstdio> #include <cstring> #include <algorithm> #include <math.h> ...

  4. 新手一步一步OpenCV+Win7+Visual Studio 2013环境配置

    地点:湖南大学软件大楼211 时间:2013.12.19 昨天导师布置了个任务,要求是找出用相机拍出同一移动场景下的两张照片,计算机能根据其中的差异计算场景移动的距离和旋转角度.据说以前很牛逼的师兄完 ...

  5. 8天玩转并行开发——第一天 Parallel的使用

    转自:http://www.cnblogs.com/huangxincheng/archive/2012/04/02/2429543.html 随着多核时代的到来,并行开发越来越展示出它的强大威力,像 ...

  6. [c++]程序的内存划分理解

    全局和静态数据区:用于存放全局变量和静态变量(全局变量和局部变量) 常量数据区:用于存放常量数据 代码区:用于存储代码 栈:用于局部变量和函数参数 堆:程序员申请(程序员控制的部分,new/delet ...

  7. Python requests模块

    import requests 下面就可以使用神奇的requests模块了! 1.向网页发送数据 >>> payload = {'key1': 'value1', 'key2': [ ...

  8. Tomcat7中配置Oracle 11g数据库DBCP连接池

    将       ojdbc6.jar       tomcat-jdbc-7.0.37.jar            拷贝到工程的WEB-INF\lib  下面 一.在Tomcat的配置文件Tomca ...

  9. C#实现汉诺塔问题

    汉诺塔的由来:汉诺塔是源自印度神话里的玩具.上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘.上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且 ...

  10. Windbg命令

    (1)!runaway命令显示每个线程消费的时间 参考:http://blog.csdn.net/hgy413/article/details/7564252 (2)!wow64exts.sw 关闭6 ...