#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. Android Application Project 工程目录下各个文件的意思

    (1) src:源文件,主要是完成java代码的编写 (2) gen:ADT即系统自动生成的JAVA文件(即源代码目录),程序员千万不要去修改 (3) gen->[Package Name]-& ...

  2. 第二百九十三天 how can I 坚持

    总感觉怪怪的,换了个领导,好烦,虽然对我没用影响. 其实,还是智商低,不懂人情世故,就像...算了,不说了,只能当自己傻. 最近好冷啊,十年不遇的寒冬. 心情有些压抑. 不玩游戏了,看了集康熙来了.小 ...

  3. Define custom @Required-style annotation in Spring

    The @Required annotation is used to make sure a particular property has been set. If you are migrate ...

  4. [iOS微博项目 - 1.5] - NavigationBar标题按钮

    A.NavigationBar标题按钮 1.需求 在“首页”的导航栏中部设置一个“首页”文字+箭头按钮 统一设置样式 根据实际文本长度调整宽度 消除系统自带的点击高亮效果 点击按钮,箭头上下颠倒 gi ...

  5. 2015年必火的五个Html5移动开发工具推荐

    NO.1   DCloudHBuilder:基于HTML5开发工具 中文官网:http://www.dcloud.io/ DCloudHBuilder:基于HTML5开发工具是当前最快的HTML开发工 ...

  6. HDU 4438 Hunters (数学,概率计算)

    题意:猎人A和B要进行一场比赛.现在有两个猎物老虎和狼,打死老虎可以得X分,打死狼可以得Y分.现在有两种情况: (1)如果A与B的预定目标不同,那么他们都将猎到预定的目标. (2)如果A与B的预定目标 ...

  7. IOS开发--数据持久化篇之文件存储(一)

    前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不 ...

  8. Linux设置禁止用户登陆

    Linux设置禁止用户登陆 vim /etc/shadow 第二栏(密码栏)设为*,会丢失密码 usermod -L username # -L Lock; -U Unlock chsh userna ...

  9. c++的操作符格式记录

    以下摘自维基百科,mark一下,以备不时之需. For the purposes of this table, a, b, and c represent valid values (literals ...

  10. Spring Hibernate4 整合配置文档

    1 applicationContext.xml配置文档 <?xml version="1.0" encoding="UTF-8"?><bea ...