由于时间的问题,就给大家先少说一点有关UITableViewCell的问题,再说如果写的越多,也许会不能消化,那么还是少来点吧!
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的南华网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!一起来看看UITableView的最重要的组成部分。
一、UITableViewCell的高亮和选中
当我们打开一个tableView的页面,上面布满了一个个cell,tableview允许我们通过datasource为这些
cell提供数据,通过delegate来控制点击cell时候如何响应。查看UITableViewCell的帮助文档我们可以
看到它有两个属性highLighted、selected。这两者之间到底又怎么样的联系呢?当我们点击cell的时候
都发生了什么呢?要达到这个目的,很简单我们只要自定义一个cell继承自UITableViewCell。
二、然后重载它的以下两个方法
这两个方法一个是设置cell的高亮状态,另一个是设置cell的选中状态,我们只需要在这两个方法里面打印信息就可以看出点击cell时这些状态是怎么变化的了。
测试的程序很简单,直接重载了这两个方法,打印设置的选中和高亮的状态。当我们点击任何一个cell的时候,输出如下:
我们可以看出,当我们点击cell的时候,其实是先设置cell的高亮状态为YES,然后松手的时候再将cell
的高亮状态设置为NO,接着才是设置cell的选中状态为YES,最后才会去调用delegate中的
tableview:didSelectRowAtIndexPath:方法。
此处我们delegate的tableview:didSelectRowAtIndexPath:方法中只是做了打印(没有遵照设计规范,在
该方法中取消选中),这个时候已经有一个cell处于选中状态时,我们再去点击另外一个cell时,输出如
下:
通过截图我们可以看出,前两布还是和第一次点击cell时类似,但是紧接着是首先设置前一个cell为非选中状态,然后在设置当前点击的cell为选中状态,最后再调用delegate的方法。为什么会先取消上一个cell的选中状态呢?因为tableView默认是不支持多选的,我们可以通过设置allowsMultipleSelection为YES来设置支持多选。
总结上面两种情况,我们发现cell的高亮状态是不能持久的,即tap的时候会变成高亮,松手的时候就会自动设置为非高亮状态。而cell的选中状态则是可以持久的,我们不去触发它改变状态,则选中状态就不会改变。
通常cell非选中且非高亮状态时候cell上的字体是黑色的,但是高亮或者选中状态时我们可能希望改变字体的颜色为白色或者其他颜色,这个时候就可以通过重载这两个方法来实现,下面是代码片段,如图:
如图所示,左边是正常情况下,右边是选中状态下:
如果有说的不对的地方,希望大家能够给我指出来,也欢迎和各位大师一起讨论关于iOS开发方面的知识,还可继续关注我,蓝鸥讲师——张浩!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。