CCTableView 之CCMenuItemToggle 多选实现 (三)

2014-11-24 00:43:53 · 作者: · 浏览: 12
egate(this);

m_pTableView->setVerticalFillOrder(kCCTableViewFillTopDown);

this->addChild(m_pTableView);

m_pTableView->reloadData();

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 1, false);
}

void CTableViewAddToggle ::onExit()
{
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
CCLayer::onExit();

this->removeChild(m_pTableView);
}


void CTableViewAddToggle::onSelect(CCObject* pSender)
{
CCMenuItemToggle* temp[MAXLNUM];

temp[((CCMenuItemImage*)pSender)->getTag()]=(CCMenuItemToggle*)pSender;

if (temp[((CCMenuItemImage*)pSender)->getTag()]->getSelectedIndex()==0)
{
m_bIsSelect[((CCMenuItemImage*)pSender)->getTag()] = false;
}

if (temp[((CCMenuItemImage*)pSender)->getTag()]->getSelectedIndex()==1)
{
m_bIsSelect[((CCMenuItemImage*)pSender)->getTag()] = true;
}

}

void CTableViewAddToggle::tableCellTouched(CCTableView* table, CCTableViewCell* cell)
{

CCLog("cell touched at index: %i", cell->getIdx());

}

CCSize CTableViewAddToggle::cellSizeForTable(CCTableView *table)
{
return CCSizeMake(SCEEN_WIDTH, BOXHEIGHT+TABLE_SPACE);
}

CCTableViewCell* CTableViewAddToggle::tableCellAtIndex(CCTableView *table, unsigned int idx)
{
m_pCell=table->dequeueCell();

if (!m_pCell)
{
m_pCell = new CCTableViewCell();

m_pCell->autorelease();
}
m_pCell->removeAllChildrenWithCleanup(true);

CCString *pString = CCString::createWithFormat("%d", idx);

CCLabelTTF *pLabel = CCLabelTTF::create(pString->getCString(), "Arial", MISSION_TTFSIZE);

pLabel->setPosition(CCPointZero);

pLabel->setAnchorPoint(CCPointZero);

pLabel->setTag(BOXHEIGHT+TABLE_SPACE);

m_pCell->addChild(pLabel);


m_pToggleItem[idx]= CCMenuItemToggle::createWithTarget(this,
menu_selector(CGeneralTeach2::onSelect),
CCMenuItemImage::create("menu/select.png","menu/noselect.png"),
CCMenuItemImage::create("menu/noselect.png","menu/select.png"),

NULL );

m_pToggleItem[idx]->setTag(idx);

m_pMenuSelect[idx]=CCMenu::create(m_pToggleItem[idx], NULL);

m_pMenuSelect[idx]->setPosition(ccp(WINSIZE.width/2+m_pToggleItem[idx]->getContentSize().width*4.0f, BOXHEIGHT-TABLE_SPACE*3));

m_pCell->addChild(m_pMenuSelect[idx]);

if (m_bIsSelect[idx])
{
m_pToggleItem[idx]->setSelectedIndex(1);
}
else
{
m_pToggleItem[idx]->setSelectedIndex(0);
}

return m_pCell;
}

unsigned int CTableViewAddToggle::numberOfCellsInTableView(CCTableView *table)
{
return MAXNUM;
}