浅析iOS tableview的selectRowAtIndexPath选中无效(默认选中cell无效)
2017-01-21 09:48
621 查看
可能很多人都遇到过这种情况:
tableview列表,有时加载完,需要默认选中某一行,给予选中效果;或者需要执行某行的点击事件。
我们举例:
比如我想默认选中第一行
可能我们第一个想法就是这样:
然而你会发现,如果你这样写了,有时候往往是没有效果的,然后就尴尬了。。。
其实,我们执行这句话后,并不会走到tableview的didSelectRowAtIndexPath代理事件内,所以期望的效果肯定是没有的,那这句话做了什么呢?
答案就是:
执行这句话后, tableview会选中cell,只不过会执行cell内的一个setSelected自带方法,如果你正好在这里面做了点击效果处理,那么是不会受影响的。
但是,如果你要做的是多选效果、或者你要的默认选中,是同时需要执行didSelectRowAtIndexPath内部逻辑效果时,悲剧的我们会发现选中无效了。。。
那么,如果我们想达到我们的目的,该怎么做呢?
可以通过下面这样:
在后面,添加一句delegate处理,就能达到你要的目的了
tableview列表,有时加载完,需要默认选中某一行,给予选中效果;或者需要执行某行的点击事件。
我们举例:
比如我想默认选中第一行
可能我们第一个想法就是这样:
[mytableview selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
然而你会发现,如果你这样写了,有时候往往是没有效果的,然后就尴尬了。。。
其实,我们执行这句话后,并不会走到tableview的didSelectRowAtIndexPath代理事件内,所以期望的效果肯定是没有的,那这句话做了什么呢?
答案就是:
执行这句话后, tableview会选中cell,只不过会执行cell内的一个setSelected自带方法,如果你正好在这里面做了点击效果处理,那么是不会受影响的。
但是,如果你要做的是多选效果、或者你要的默认选中,是同时需要执行didSelectRowAtIndexPath内部逻辑效果时,悲剧的我们会发现选中无效了。。。
那么,如果我们想达到我们的目的,该怎么做呢?
可以通过下面这样:
//默认选中第一行,并执行点击事件 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; [mytableview selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop]; if ([mytableview.delegate respondsToSelector:@selector(tableView:didSelectRowAtIndexPath:)]) { [mytableview.delegate tableView:mytableview didSelectRowAtIndexPath:indexPath]; }
在后面,添加一句delegate处理,就能达到你要的目的了
相关文章推荐
- ios tableView设置cell选中颜色以及表格默认选中某行
- 默认tableview选中第一个cell
- iOS TableView didSelectRowAtIndexPath选中某Cell后获取其Cell实例对象
- IOS 开发之实现取消tableView返回时cell选中的问题
- iOS TableView 默认选中某行
- iOS TableView 默认选中某行
- tableview编辑状态下 默认选中cell之后 无法点击取消
- iOS TableView didSelectRowAtIndexPath选中某Cell后获取其Cell实例对象
- iOS tableview 选中Cell后的背景颜色和文字颜色
- IOS开发相关07--UITableView默认选中第一个cell
- iOS tableview获取当前选中的cell
- tableview属性 不显示cell分割线,右边小箭头取消选中 iOS 新手笔记
- iOS设置UITableView中Cell被默认选中后怎么触发didselect事件
- iOS tableView刷新选中cell数据
- iOS TableView didSelectRowAtIndexPath选中某Cell后获取其Cell实例对象
- IOS tableView 去除分割线 和 不允许选中表格cell
- iostableView cell默认分割线的去除
- iOS TableView didSelectRowAtIndexPath选中某Cell后获取其Cell实例对象
- iOS tableView 选中某个cell时 标准的处理方法
- iOS 为tableview添加新的cell类