博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tableView 设置默认选中cell无效(一定能解决你的问题)
阅读量:6033 次
发布时间:2019-06-20

本文共 1104 字,大约阅读时间需要 3 分钟。

hot3.png

今天在弄一个tableView默认选中cell,时,遇到一个问题,就是并未被选中(出现选中的样式)。我百度谷歌,提供的都是差不多的答案:if语句判断tableview的代理是否能够响应那个点击的方法,然后调用代理中的点击选中方法。

就是下面这样的: if ([self.tableView.delegate respondsToSelector:@selector(tableView:didSelectRowAtIndexPath:)]) { [self.tableView.delegate tableView:self.tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]; } 我试了,根本就不管用。有同学建议我在数据模型属性中增加一个布尔变量,根据这个来变换视图。没错,这个方法的确可以,但这不是最明智的做法。明明系统有提供selectRowAtIndexPath..这个方法,为啥不用这个呢?而且cell中本身就带有- (void)setSelected:(BOOL)selected animated:(BOOL)animated这个方法,我们自己判断一下就可以改变相应的视图了,比如背景色呀,一些按钮的显示与隐藏等。我在询问我的同事的时候发现他对这个不熟悉,可能他没用过,一般我就是用这个来控制选中与不选中的状态,很方便。

我在有静态数据的页面去设置默认选中的cell是起作用的,但在非静态数据也就是要通过网络获取的页面设置是不起作用的,于是我就在获取到数据后添加了 [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];发现还是不管用。然后我想了想,会不会是因为这个时候tableview并没有那些数据,所以我设置了也没用呢。于是我就剪切这样代码,将它复制到【tableview reloadData】代码之后,然后就好了。

现在想想,以前设置collectionView的默认选中也不行,找了许多乱七八糟的代码帖进去,虽然最后也解决了问题,但那并不是最优雅的解决方式。大家现在知道为什么设置没用了吧,网上有些例子那都是静态数据,所以直接设置都是没问题的,动态数据那就得在获取数据tableview刷新页面后设置默认选中cell。

转载于:https://my.oschina.net/NycoWang/blog/1609277

你可能感兴趣的文章
汽车知识:车内异味的清除方法
查看>>
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
浏览器的回流和重绘及其优化方式
查看>>
Eclipse基金会发布Eclipse Photon IDE
查看>>
jQuery选择器和事件
查看>>
2.4 salt grains与pillar jinja的模板
查看>>
VDI序曲二十 桌面虚拟化和RemoteApp集成到SharePoint 2010里
查看>>
cx_Oracle install
查看>>
jquery ajax从后台获取数据
查看>>
Nginx下载服务生产服务器调优
查看>>
移动互联网,入口生死战
查看>>
nginx面试常问题目
查看>>
制作ubuntu系统u盘镜像,以及安装
查看>>
JAVA多线程深度解析
查看>>
Kafka High Level Consumer 会丢失消息
查看>>
时间轴
查看>>
java 获取系统当前时间的方法
查看>>
Ubuntu 10.04升级git 到1.7.2或更高的可行方法
查看>>
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
消息队列服务器 memcacheq的搭建
查看>>