UITableView套UITableView数据刷新
https://www.jianshu.com/p/ee4b2bd54d08
网上关于tableview嵌套tableview的文章很多,纵览很多后发现有两点没有满足需求
把两个tableview放在一个控制器中这样对大批量的数据处理不够友好
没有做到tableview互斥滚动(只有一个可以滚动)
主要的一点
在父控制器的tableview的GSTableview.m文件中实现这个方法
/**
同时识别多个手势
@param gestureRecognizer gestureRecognizer description
@param otherGestureRecognizer otherGestureRecognizer description
@return return value description
*/
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
实现的原理是
当子控制器中的tableview偏移量<=0 的时候让这个tableview不能滚动 代码表示为 scrollView.contentOffset = CGPointZero; 并且通知父控制器可以滚动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"scrollView.contentOffset.y=== %f",scrollView.contentOffset.y);
// 只有控制这个tableview的滑动才可以 实现下拉刷新 所以设置scrollView.contentOffset = CGPointZero
// 向下拖动 scrollView.contentOffset.y 值小于零
// vcCanScroll 从上一个控制器传递过来
if (!_vcCanScroll) {
scrollView.contentOffset = CGPointZero;
}
if (scrollView.contentOffset.y <= 0) {
_vcCanScroll = NO;
// 到顶通知父视图改变状态 用于有多个同级的控制器 用来设置所有控制器中的tableview 偏移量设置为 CGPointZero 还有就是设置父控制器中tableview的 canScroll;
scrollView.contentOffset = CGPointZero;
[[NSNotificationCenter defaultCenter] postNotificationName:@"leaveTop" object:nil];
}
// 设置是否显示垂直滚动条 VerticalScrollIndicator
self.tableView.showsVerticalScrollIndicator =_vcCanScroll?YES:NO;
}
父控制器在接受到通知执行的操作
- (void)changeSrollStatus{
通知让父控件可以滚动
self.canScroll = YES;
}
当父控制器可以滚动的时候 设置子控制器中tableview 不能滚动 代码中是通过设置属性来实现的 self.childViewController.vcCanScroll = YES;
父控制器的scrollviewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGFloat bottomCellOffset = [_gsTableView rectForSection:1].origin.y - 64;
if (scrollView.contentOffset.y >= bottomCellOffset) {
scrollView.contentOffset = CGPointMake(0, bottomCellOffset);
if (self.canScroll) {
self.canScroll = NO;
self.childViewController.vcCanScroll = YES;
}
}else{
if (!self.canScroll) {
scrollView.contentOffset = CGPointMake(0, bottomCellOffset);
}
}
self.gsTableView.showsVerticalScrollIndicator = _canScroll?YES:NO;
}
子控制器中设置
- (void)setVcCanScroll:(BOOL)vcCanScroll{
_vcCanScroll = vcCanScroll;
}
代码地址
作者:codeShuai
链接:https://www.jianshu.com/p/ee4b2bd54d08
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


造成闪烁的原因,主要是因为CALayer有一个隐式动画,只要在调用reloadData刷新时,关闭隐式动画就可以避免了。代码示例如下:
[CATransaction setDisableActions:YES];
[self.collectionView reloadData];
[CATransaction commit];
---------------------
作者:weixin_33912246
来源:CSDN
原文:https://blog.csdn.net/weixin_33912246/article/details/87000284
版权声明:本文为博主原创文章,转载请附上博文链接!
UITableView套UITableView数据刷新的更多相关文章
- iOS-UI控件之UITableView(四)- cell数据刷新
TableView- 数据刷新 数据刷新 添加数据 删除数据 更改数据 全局刷新方法(最常用) [self.tableView reloadData]; // 屏幕上的所有可视的cell都会刷新一遍 ...
- popViewControllerAnimated 后,对页面内UITableView 内数据刷新
popViewControllerAnimated后,这时它不执行viewDidLoad,所以不能及时对viewControler及时刷新,此时对该页面进行操作可以调用viewWillAppear:( ...
- iOS开发UI篇—实现UItableview控件数据刷新
iOS开发UI篇—实现UItableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运 ...
- IOS第七天(3:UiTableView 模型和数据的分组的显示)
*************UiTableView模型和数据的分组的显示 #import "HMViewController.h" #import "HMHero.h&qu ...
- uitableview分组的数据2中方式
// // ViewController.m // tableviegroup // // Created by ganchaobo on 13-7-2. // Copyright (c) 2013年 ...
- IOS tableView的数据刷新
1.tableView的刷新 1> 数据刷新的总体步骤 * 修改模型数据 * 刷新表格(刷新界面) 2> 刷新表格(刷新界面)的方法 * 全局刷新(每一行都会重新刷新) - (void)r ...
- IOS开发UI基础--数据刷新
IOS开发UI基础--数据刷新 cell的数据刷新包括下面几个方面 加入数据 删除数据 更改数据 全局刷新方法(最经常使用) [self.tableView reloadData]; // 屏幕上的全 ...
- PowerBI开发 第七篇:数据集和数据刷新
PowerBI报表是基于数据分析的引擎,数据真正的来源(Data Source)是数据库,文件等数据存储媒介,PowerBI支持的数据源类型多种多样.PowerBI Service(云端)有时不直接访 ...
- RecyclerView 数据刷新的几种方式 局部刷新 notify MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
随机推荐
- ASP.NET系统对象
一.ASP.NET 系统对象 Request:用来获取客户端在Web请求期间发送的值,如URL参数,表单参数 Response:用来负者返回到客户端的HTTP输出 ...
- 函数指针的返回值是指针数组,数组里放的是int;函数指针的返回值是指针数组,数组里放的是int指针
函数指针的返回值是指针数组,数组里放的是int 函数指针的返回值是指针数组,数组里放的是int指针 #include <stdio.h> #include <stdlib.h> ...
- tesseract-ocr安装问题
今天安装tesseract-ocr的时候,载了坑,记录一下. 1. 安装时语言库的选择,我把 aditional language data 这一项全选中了,装的时候那叫一个慢啊,差不多3个小时装好的 ...
- IIS 部署问题 404
在部署IIS环境中,偶尔会遇到 404 错误,就算以前遇到过,也因为时间久了导致大概知道是什么错了,具体解决方案觉忘了,所以留下一个记录,留给自己,也是给大家一点提醒.(注:错误信息也懒得截图了,希望 ...
- kafka_2.11-2.0.0_常用操作
参考博文:Kafka消费组(consumer group) 参考博文:kafka 1.0 中文文档(九):操作 参考博文:kafka集群管理工具kafka-manager部署安装 以下操作可以在min ...
- Java抽象类(Abstract Class)与接口(Interface)区别
抽象类与接口比较 抽象类跟接口类似,都不能实例化,可能包含不需实现方法或已实现的方法. 抽象类可以定义一些不是静态或常量的字段,定义 public, protected, private访问级别的具体 ...
- WPF中应用字体图标
一.什么是字体图标 我们在进行GDI(图形界面)编程的过程中图标是不可少的.近些年随着网络的繁荣和移动应用的繁荣,矢量图的应用越来越火. 矢量图是一种用数学方法描述的.由一系列点和线组成的图,因此相比 ...
- centos 防火墙的操作
systemctl start firewalld systemctl restart firewalld systemctl status firewalld systemctl enable fi ...
- 最简单的C#UDP通讯示例
参考:https://www.cnblogs.com/zxyc2000/articles/2846662.html 和 https://www.cnblogs.com/mq0036/p/7302605 ...
- Oracle的条件in中包含NULL时的处理
我们在写SQL时经常会用到in条件,如果in包含的值都是非NULL值,那么没有特殊的,但是如果in中的值包含null值(比如in后面跟一个子查询,子查询返回的结果有NULL值),Oracle又会怎么处 ...