在网上查了些资料,我们先开始来创建一个TableView,
class MyListViewLayer : public MyListViewLayerBase, public CCTableViewDataSource, public CCTableViewDelegate
先继承CCTableViewDataSource,CCTableViewDelegate
需要实现CCTableViewDataSource:
CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);
unsigned int numberOfCellsInTableView(CCTableView *table);
然后实现ScrollView中的:
void tableCellTouched(CCTableView* table, CCTableViewCell* cell);
具体实现如下:
void MyListViewLayer::initLayer() {
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCTableView *tableView = CCTableView::create(this, CCSizeMake(200, 200));
tableView->setAnchorPoint(ccp(0.5f, 0.5f));
tableView->setPosition(ccp(size.width / 2.0f, size.height / 2.0f));
tableView->setDirection(kCCScrollViewDirectionVertical);
tableView->setDelegate(this);
tableView->setVerticalFillOrder(kCCTableViewFillTopDown);
tableView->reloadData();// add
this->addChild(tableView, 1);
this->setTouchEnabled(true);
}
CCSize MyListViewLayer::cellSizeForTable(CCTableView *table) {
return CCSizeMake(200, 100);
}
CCTableViewCell* MyListViewLayer::tableCellAtIndex(CCTableView *table, unsigned int idx) {
CCTableViewCell *cell = table->dequeueCell();
if(cell == NULL) {
cell = new CCTableViewCell();
cell->autorelease();
}
cell->removeAllChildrenWithCleanup(true);
CCSprite *testSprite = CCSprite::create("leftSelected.jpg");
testSprite->setAnchorPoint(ccp(0.5f, 0.5f));
testSprite->setPosition(ccp(200, idx * 50 + 100));//创建一个table
CCSize size = testSprite->getContentSize();
testSprite->setContentSize(ccp(100, 100));
cell->addChild(testSprite, 2);
return cell;
}
unsigned int MyListViewLayer::numberOfCellsInTableView(CCTableView *table) {
return 3;//table 个数
}
void MyListViewLayer::tableCellTouched(CCTableView* table, CCTableViewCell* cell) {
CCLOG("tableCellTouched\n");
}