天天看點

記錄CCTableView用法

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;

}

繼續閱讀