CCTableView 用法步驟:
1.類繼承CCTableViewDelegate,CCTableViewDataSource,然後聲明下列方法
//CCTableViewDelegate 繼承自 CCScrollViewDelegate,
virtual void scrollViewDidScroll( CCScrollView * view){};
virtual void scrollViewDidZoom( CCScrollView * view){};
// 點選哪個 cell
virtual void tableCellTouched( CCTableView * table, CCTableViewCell * cell);
// 每個 cell 的 size
virtual CCSize cellSizeForTable( CCTableView *table);
// 生成 cell
virtual CCTableViewCell * tableCellAtIndex( CCTableView *table, unsigned int idx);
//cell 的數量
virtual unsigned int numberOfCellsInTableView( CCTableView *table);
// 按下cell高亮
virtual void tableCellHighlight( CCTableView * table, CCTableViewCell * cell);
//擡起 取消高亮
virtual void tableCellUnhighlight(CCTableView* table,CCTableViewCell* cell);
2.建立初始化一個CCTableView
CCTableView* tableView = CCTableView::create(this,CCSize(200, size.height));
tableView->setDirection(kCCScrollViewDirectionVertical); //垂直方向
tableView->setPosition(CCPointZero);
tableView->setAnchorPoint(ccp(0,0));
tableView->setDelegate(this);
tableView->setVerticalFillOrder(kCCTableViewFillTopDown); //填充排序方向
this->addChild(tableView,1);
tableView->reloadData();
3.實作方法: CCTableView在建立時候會從numberOfCellsInTableView()中拿到cell數量,通tableCellAtIndex()建立具體cell,從cellSizeForTable()中拿到cell的size設定
//點選哪個cell
voidHelloWorld::tableCellTouched(CCTableView* table,CCTableViewCell* cell)
{
CCLog("cell touched at index: %i", cell->getIdx());
}
//每個cell的size
CCSizeHelloWorld::cellSizeForTable(CCTableView *table)
{
return CCSize(80,80);
}
//生成cell
CCTableViewCell*HelloWorld::tableCellAtIndex(CCTableView *table,unsigned int idx)
{
CCString* nameStr = CCString::createWithFormat("%d",idx);
CCTableViewCell* cell = table->dequeueCell();
if (cell == NULL) {
cell =new CCTableViewCell();
cell->autorelease();
//建立精靈圖檔,添加到cell
CCSprite* iconSpr = CCSprite::create("Icon.png");
iconSpr->cocos2d::CCNode::setAnchorPoint(CCPointZero);
iconSpr->setPosition(CCPointZero);
iconSpr->setTag(10);
cell->addChild(iconSpr);
//建立字型Label,添加到cell
CCLabelTTF* label = CCLabelTTF::create(nameStr->getCString(),"Arial",40.0);
label->setPosition(ccp(20,20));
label->cocos2d::CCNode::setAnchorPoint(CCPointZero);
label->setTag(20);
cell->addChild(label);
}
// 如果已建立,便隻設定内容即可
else {
CCLabelTTF* label = (CCLabelTTF*)cell->getChildByTag(20);
label->setString(nameStr->getCString());
}
return cell;
}
//按下Cell高亮
voidHelloWorld::tableCellHighlight(CCTableView* table,CCTableViewCell* cell)
{
CCTexture2D* texture =CCTextureCache::sharedTextureCache()->addImage("CloseNormal.png");
CCSprite* iconSpr = (CCSprite*)cell->getChildByTag(10);
iconSpr->setTexture(texture);
}
//擡起取消高亮
voidHelloWorld::tableCellUnhighlight(CCTableView* table,CCTableViewCell* cell)
{
CCTexture2D* texture =CCTextureCache::sharedTextureCache()->addImage("Icon.png");
CCSprite* iconSpr = (CCSprite*)cell->getChildByTag(10);
iconSpr->setTexture(texture);
}
//cell的數量
unsignedint HelloWorld::numberOfCellsInTableView(CCTableView *table)
{
return 6;
}