CCTableView

CCTableView

今天用到TableView, 我就来记录一下....这些都是在网上找到了资料

//首先 继承 :

public cocos2d::extension::CCTableViewDelegate,
public cocos2d::extension::CCTableViewDataSource

 

//CCTableViewDelegate继承自CCScrollViewDelegate  方法可以空着,但一定要写

virtual void scrollViewDidScroll(cocos2d::extension::CCScrollView* view);  

virtual void scrollViewDidZoom(cocos2d::extension::CCScrollView* view);

 

//下面TableView所用到的方法

//点击哪个cell   调用的方法  点击方法调用顺序(  Highlight -> Unhighlight -> Touched  )

 virtual void tableCellTouched(cocos2d::extension::CCTableView* table, cocos2d::extension::CCTableViewCell* cell);  

 //每个cell的size    

virtual cocos2d::CCSize cellSizeForTable(cocos2d::extension::CCTableView *table);  

 //生成cell  

 virtual cocos2d::extension::CCTableViewCell* tableCellAtIndex(cocos2d::extension::CCTableView *table, unsigned int idx);    

//cell的数量    

virtual unsigned int numberOfCellsInTableView(cocos2d::extension::CCTableView *table);  

 //按下去的时候调用的方法

 virtual void tableCellHighlight(cocos2d::extension::CCTableView* table, cocos2d::extension::CCTableViewCell* cell);  

 //松开的时候调用的方法

 virtual void tableCellUnhighlight(cocos2d::extension::CCTableView* table, cocos2d::extension::CCTableViewCell* cell);  

 

    //接下来是实现,首先创建TableView

    CCSize visibSize=CCDirector::sharedDirector()->getVisibleSize();  
    //传入自己,后面的size是TableView显示的大小
    CCTableView *tableView=CCTableView::create(this, CCSizeMake(visibSize.width, visibSize.height));  
    //横向还是竖向          (  kCCScrollViewDirectionVertical 竖向 ;  kCCScrollViewDirectionHorizontal   横向  )
    tableView->setDirection(kCCScrollViewDirectionVertical);  

    tableView->setPosition(CCPointZero);  
    tableView->setDelegate(this);  
    //call的id顺序   (kCCTableViewFillTopDown 从上到下 ;  kCCTableViewFillBottomUp   从下到上)
    tableView->setVerticalFillOrder(kCCTableViewFillTopDown);  
    //是否开启回弹  默认开启

    tableView->setBounceable(true);
    this->addChild(tableView,1);  
    tableView->reloadData(); 

 

    unsigned int HelloWorld::numberOfCellsInTableView(CCTableView *table)   
    {   
        return 10;   //显示10行
    }

 

    int  m_iNodeTag = 1000; // Tag值

    CCTableViewCell* HelloWorld::tableCellAtIndex(CCTableView *table, unsigned int idx)   {  



        CCLOG("%d",idx);    //idx 就是每个cell的下标,获取到下标就能知道点击的是那个call



        //当cell在屏幕外面时, 就被放入dequeueCell() 中

        CCTableViewCell *cell = table->dequeueCell();  

        CCSprite *mSprite;

        if (!cell) {   

            //如果没有就创建...

            cell = new CCTableViewCell();   

            cell->autorelease();   

            mSprite= CCSprite::create("cell.png");  

            mSprite->setAnchorPoint(CCPointZero);   

            mSprite->setTag(m_iNodeTag);

            mSprite->setPosition(ccp(0, 0));   

            cell->addChild(mSprite);



            CCLabelTTF *label = CCLabelTTF::create(string->getCString(), "Helvetica", 20.0);  

            label->setPosition(CCPointZero);  

            label->setAnchorPoint(CCPointZero);  

            label->setTag(123);   

            cell->addChild(label);

        }  else  {   

            //如果有了就获取tag值

            mSprite = dynamic_cast<CCSprite *>(call->getChildByTag( iNodeTag ));

            CCLabelTTF *label = (CCLabelTTF*)cell->getChildByTag(123);  

            label->setString(string->getCString());  

        }

        //在这里写一个接口...改变各个cell

        return cell;  

    } 

 

    CCSize CActivityLayer::cellSizeForTable(CCTableView *table)   {   

        //返回的是每一个cell 的size

        return CCSizeMake(m_pActivityView->getContentSize().width, 80); 

    } 

 

ps:剩下没写的函数..我这写的是空....有需求的看着上面的函数声明来写

 
posted @ 2015-11-27 17:53 HaoK 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值