2013-06-24 2 views
0

Я сделал выпадающий список, используя CCTableView. Его работа вполне нормально. Теперь я должен скрыть таблицу, когда я выбираю любую запись. Поэтому я написал следующий код.Cocos2dx CCTableView issue

void Sample1::tableCellTouched(CCTableView* table, CCTableViewCell* cell) 
{  
    CCLOG("cell touched at index: %i", cell->getIdx()); 
    table->setVisible(false); 
} 

Когда выполняется таблица становится невидимым, но когда я пытаюсь снова сделать его видимым он (CCTableView) не реагирует на любые прикосновения, в то время как другие кнопки реагируют.

Может ли кто-нибудь догадаться, что может быть неправильным !?

+0

Как вы добавили ячейку в свой CCTableView? Вы можете поделиться? – Jason

ответ

0

Это потому, что сам CCTableView проверяет, видима ли она и не будет обрабатывать касания, если она невидима. Здесь ответственный участок в CCTableView.cpp:

if (!this->isVisible()) { 
    return; 
} 

Этот фрагмент одновременно в ccTouchBegan и ccTouchEnded.

Ваш делегат tableCellTouched будет вызываться внутри CCTableView's ccTouchEnded, поэтому вам нужно будет сделать вашу таблицу видимой в функции, которая не зависит от вызовов от CCTableView.

0

Для добавления TableCell в CCTable

сделать класс с именем CustomClass:

В CustomClass.cpp

CCTableCell * CustomClass :: tableMethod (CCTable * pTable, неподписанных INT IDX)

{

CCTableCell * tableCell = pTable-> dequeueCell();

if(!tableCell) 
{ 
    tableCell = new CCTableCell(); 

addChild (tableCell);

} 

таблица возвратаCell;