在cocos2d-x中CCTableView控件的使用方法

頭文件需要繼承CCTableViewDataSource和CCTableViewDelegate
//CCScrollViewDelegate
virtual void scrollViewDidScroll(CCScrollView* view){};
virtual void scrollViewDidZoom(CCScrollView* view){};

//CCTableViewDelegate
virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);//當點擊單元格格時觸發的方法
//單元格中CCTableViewCell類中有一個屬性idx,可以判斷點擊的這個單元格的索引
virtual void tableCellHighlight(CCTableView* table,CCTableViewCell* cell);//按下去的時候就是高亮顯示,這裏可以設置高
virtual void tableCellUnhighlight(CCTableView* table,CCTableViewCell* cell);//鬆開的時候,取消高亮狀態

//CCTableViewDataSource
virtual unsigned int numberOfCellsInTableView(CCTableView* table);//返回這個表格有多少單元格
virtual CCSize cellSizeForTable(CCTableView* table);//返回每個Cell的大小
virtual CCTableViewCell* tableCellAtIndex(CCTableView* table,unsigned int idx); //生成單元格,即單元格的內容


//實例
在init方法中:
CCSize winSize = CCDirector::sharedDirector() -> getWinSize();
CCTableView* tableView = CCTableView::create(this,CCSizeMake(winSize.width/2,winSize.height/3));
tableView -> setDirection(kCCScrollViewDirectionVertical);
tableView -> setPosition(ccp(winSize.width * 0.07,winSize.width * 0.35));
tableView -> setDelegate(this);
tableView -> setTag(802);
tableView -> setAnchorPoint(CCPointZero);
tableView -> setTouchPriority(-129);
this -> addChild(tableView);
//這裏爲什麼要設置此表格的觸摸優先級爲-129呢?
如果不這麼辦的話,當這個層的觸摸開啓的時候,滑動表格中的單元格不會滑動,把表格的觸摸給吞噬掉了,所以要這樣設置。
那麼單元格的內容是什麼呢?
下面看這個方法:
CCTableViewCell* tableCellAtIndex(CCTableView* table,unsigned int idx)
{
  CCTableViewCell* cell = table -> dequeueCell();
  if(!cell)
  {
    cell = new CCTableViewCell();
    cell -> autorelease();
  }
  cell -> removeAllChildrenWithCleanup(true);
  CCLabelTTF* label = CCLabelTTF::create("abc","Arial",24);
  label -> setPosition(ccp(150,30));
  cell -> addChild(label);


  return cell;
}
//這樣單元格中就有了內容
那麼怎樣獲取到單元格的內容呢?看下面這個方法
void tableCellTouched(CCTableView* table, CCTableViewCell* cell)
當點擊單元格時,會執行這個方法,cell中有個屬性getIdx(),可以判斷點擊的單元格是第幾個單元格,當然,通過cell->getChildByTag


(),可以捕獲到cell中有什麼東西。
當單元格上有按鈕時,在實現按鈕的方法中:
void menuCallBack(CCObject* object)
{
  CCTableViewCell* cell = (CCTableViewCell*)(((CCMenuItemImage*)object)->getParent()->getParent());
  CCLog("menu click cell index : %d\n",cell -> getIdx());
}
這樣也可以通過單元格上的按鈕來獲得單元格。
  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章