
正文
iOS - UIRefreshControl 刷新数据
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
前言
NS_CLASS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED @interface UIRefreshControl : UIControl
1、UIRefreshControlUITableViewController 自带刷新控件。
使用 StoryBoard 创建的表格视图控制器可在 SB 的 TableViewController 中将 Refreshing 项设置为 Enableed,在控件为列表中将自动添加一个名为 Refresh Control 的控件,将该控件连接到代码中的自定义加载数据方法,即可实现刷新数据的操作。
纯代码创建的 TableViewController 可以直接使用 self.refreshControl = [[UIRefreshControl alloc] init]; 实例化刷新控件。然后向 self.refreshControl 中添加自定义加载数据方法,即可实现刷新数据的操作。
1.1 StoryBoard 方式创建
UITableViewController 自带刷新控件。
使用 StoryBoard 创建的表格视图控制器可在 SB 的 TableViewController 中将 Refreshing 项设置为 Enableed,在控件为列表中将自动添加一个名为 Refresh Control 的控件,将该控件连接到代码中的自定义加载数据方法,即可实现刷新数据的操作。
纯代码创建的 TableViewController 可以直接使用 self.refreshControl = [[UIRefreshControl alloc] init]; 实例化刷新控件。然后向 self.refreshControl 中添加自定义加载数据方法,即可实现刷新数据的操作。

实例化刷新控件
Refreshing : Enabled 开启刷新控件
Disabled 关闭刷新控件IBAction : - (IBAction)downloadData ,将 Refresh Control 控件连接到代码中的自定义方法。设置刷新控件属性
Title : 设置刷新控件下边的提示文字及文字的颜色,也可使用代码设置Background : 设置刷新控件背景视图的颜色,设置了颜色之后,下拉的时候控件会随下拉向下滑动
Tint : 设置控件的颜色,也可使用代码设置// 设置刷新控件的颜色
self.refreshControl.tintColor = [UIColor redColor];// 设置刷新控件下边的提示文字及文字的颜色
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"松开手开始刷新"];开始/停止刷新
// 判断是否正在刷新,readonly
BOOL isRefreshing = self.refreshControl.isRefreshing;// 开始刷新,在 TableViewController 中,下拉表格自动刷新,使用方法开始刷新时表格自动下拉
[self.refreshControl beginRefreshing];// 停止刷新,刷新完成后必须调用停止刷新方法
[self.refreshControl endRefreshing];
1.2 纯代码方式创建实例化刷新控件
// refreshControl 为 TableViewController 的属性,无需声明
self.refreshControl = [[UIRefreshControl alloc] init];// 添加刷新方法
[self.refreshControl addTarget:self action:@selector(downloadData) forControlEvents:UIControlEventValueChanged];
开始/停止刷新
// 判断是否正在刷新,readonly
BOOL isRefreshing = self.refreshControl.isRefreshing;// 开始刷新,在 TableViewController 中,下拉表格自动刷新,使用方法开始刷新时表格自动下拉
[self.refreshControl beginRefreshing];// 停止刷新,刷新完成后必须调用停止刷新方法
[self.refreshControl endRefreshing];
设置刷新控件属性
// 设置刷新控件的颜色
self.refreshControl.tintColor = [UIColor redColor];// 设置刷新控件下边的提示文字及文字的颜色
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"松开手开始刷新"];
2、refreshControl 的使用Objective-C
VideoModel.h
// copy 属性,在设置数值的时候,如果有一方是可变的,会默认做一次 copy 操作,会建立新的副本
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *teacher;// 为了避免服务端返回的数值型数据是 null,可以把数值型的数据设置成 NSNumber
@property (nonatomic, copy) NSNumber *length;
VideoCell.h
@class VideoModel;
@property (nonatomic, strong) VideoModel *videoModel;
VideoCell.m
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *teacherLabel;
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;- (void)setVideoModel:(VideoModel *)videoModel { _videoModel = videoModel; self.nameLabel.text = videoModel.name;
self.teacherLabel.text = videoModel.teacher;
self.timeLabel.text = [NSString stringWithFormat:@"%@", videoModel.length];
}
ViewController.h
@interface ViewController : UITableViewController
ViewController.m
// 表格数据源数组
@property (nonatomic, strong) NSArray *dataSourceArray;// 网络数据解析数据源
@property (nonatomic, strong) NSMutableArray *videosSourceArray;// 数据模型
@property (nonatomic, strong) VideoModel *videoModel;// 数据模型的值
@property (nonatomic, strong) NSMutableString *videoModelElementValueString;// 设置数据源数据 - (void)setDataSourceArray:(NSArray *)dataSourceArray {
_dataSourceArray = dataSourceArray; // 刷新表格
[self.tableView reloadData]; // 停止刷新,刷新完成后必须调用停止刷新方法
[self.refreshControl endRefreshing];
}// 懒加载 - (NSMutableArray *)videosSourceArray {
if (_videosSourceArray == nil) {
_videosSourceArray = [[NSMutableArray alloc] init];
}
return _videosSourceArray;
} - (NSMutableString *)videoModelElementValueString {
if (_videoModelElementValueString == nil) {
_videoModelElementValueString = [[NSMutableString alloc] init];
}
return _videoModelElementValueString;
}// 表格数据源方法 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.dataSourceArray.count;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { VideoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; cell.videoModel = self.dataSourceArray[indexPath.row]; return cell;
}// 下载解析数据 // 连接到表格刷新控件
- (IBAction)downloadData { NSURL *url = [NSURL URLWithString:@"http://192.168.88.200/videos/videos.xml"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:15.0];
NSURLSession *session = [NSURLSession sharedSession];// 异步执行
NSURLSessionDataTask *task = [session dataTaskWithRequest:request
completionHandler:^(NSData * _Nullable data,
NSURLResponse * _Nullable response,
NSError * _Nullable error) {if (error == nil && data != nil) {
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
}
}];[task resume];
} - (void)parserDidStartDocument:(NSXMLParser *)parser {
[self.videosSourceArray removeAllObjects];
} - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict { if ([elementName isEqualToString:@"video"]) {
self.videoModel = [[VideoModel alloc] init];
self.videoModel.videoId = @([attributeDict[@"videoId"] intValue]);
}
[self.videoModelElementValueString setString:@""];
} - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
[self.videoModelElementValueString appendString:string];
} - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName { if ([elementName isEqualToString:@"video"]) {
[self.videosSourceArray addObject:self.videoModel];
} else if (![elementName isEqualToString:@"videos"]) {
[self.videoModel setValue:self.videoModelElementValueString forKey:elementName];
}
} - (void)parserDidEndDocument:(NSXMLParser *)parser {// 主线程更新 UI
dispatch_async(dispatch_get_main_queue(), ^{self.dataSourceArray = self.videosSourceArray;
});
}
iOS - UIRefreshControl刷新数据的更多相关文章- 【iOS】Plist-XML-JSON数据解析
网络上数据传输通用的有XML.JSON等,iOS中也能够用Plist. 要进行传输数据.就要首先进行序列化: 1.序列化. 对象转换成二进制流.(这个一句话即可) .反序列化. 二进制流转换为对象等 ...
- iOS开发系列--数据存取
概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...
- SQL实现类似于自动刷新数据的功能
有时需要在SQL中,定时刷新某张表,比如说是要定时查询某张表的行数,通常做法就是手动的按F5去执行来刷新数据.但是如果这个定时查询历时较长,10分钟,或半小时,手动的话肯定是要崩溃了.貌似SQL没有像 ...
- iOS中的数据持久化方式
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
- ios的网络数据下载和json解析
ios的网络数据下载和json解析 简介 在本文中,笔者将要给大家介绍如何使用nsurlconnection 从网上下载数据,以及解析json数据格式,以及如何显示数据和图片的异步下载显示. 涉及的知 ...
- jsTree 的简单用法--异步加载和刷新数据
首先这两个文件是必须要引用的,还有就是引用 jQuery 文件就不说了: <link href="/css/plugins/jsTree/style.min.css" rel ...
- 解决JQuery中datatables设置隐藏显示列多次提交后台刷新数据的问题
此次项目开发过程中用到了Jquery的Datatables插件,无疑他是数据列表展示,解决MVC中同步过程中先走控制器后返回视图,查询数据过程中无法提示等待的弊端, 而且他所提供的各种方法也都有较强的 ...
- POI刷新数据后的函数(公式)更新问题
使用POI将Excel模板中的数据进行更新,这应该是很常见的操作 下面就贴上我的一小段代码 public class ModifyExcel { /** * @param fileName Excel ...
- 【转】iOS开发系列--数据存取
原文: http://www.cnblogs.com/kenshincui/p/4077833.html#SQLite 概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储 ...
随机推荐- fso查找被删除的文件
<html> <head> </head> <body> 源目录:<input id="txtOld" value=" ...
- 使用gnucash查看任意时间段内的所有者权益变动表
gnucash默认会以当年的会计账期显示所有者权益变动表 如果要看指定时间的所有者权益变动表,需要这样做 打开所有者权益变动表 点击上面的[选项] 如图 在常规中自行选择日期 确定后就能够看到指定时间 ...
- python-基础案例
范例一: 练习:元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值 ...
- 用ie调试的时候显示:脚本调试程序无法连接到目标进程,已附加调试程序。
解决方案如图所示: 解决方案: 在internet的选项工具中选中高级然后去掉禁止脚本调试的情况:
- SSDT Hook
一.效果图 二.分析 这里对NtCreateProcessEx做拦截,用WinDbg来定位该函数在SSDT中的记录地址: : kd> dd KeServiceDescriptorTable 80 ...
- 细数Android开源项目中那些频繁使用的并发库中的类
这篇blog旨在帮助大家 梳理一下前面分析的那些开源代码中喜欢使用的一些类,这对我们真正理解这些项目是有极大好处的,以后遇到类似问题 我们就可以自己模仿他们也写 出类似的代码. 1.ExecutorS ...
- Key Task
Problem Description The Czech Technical University is rather old - you already know that it celebrat ...
- NUMBER_GET_NEXT 获取编号 遇到关于按年度编号的问题
最近给财务做了一个平台,在系统创建一些特殊类型的合同,需要生成合同编号:财务要求 合同类型+公司代码 +年+三位流水号, eg:CP6008-2017001 SNRO 子对象数据元素就是 公司代码 不 ...
- 运行期以索引获取tuple元素-C++14(原创)
在编译期很容易根据索引来获取对应位置的元素,因为 tuple 的帮助函数 std::get<N>(tp) 就能获取 tuple 中第 N 个元素.然而我们却不能直接在运行期通过变量来获取 ...
- OTG驱动分析(一)
前一段时间弄了2个礼拜的OTG驱动调试,感觉精神疲惫啊.主要原因还是自己对OTG功能不了解造成的.现在终于完成但是对实质原理还有些模糊.所以自己重新总结一下.因为自己是菜鸟,所以用菜鸟的白话方式分析. ...
实例化刷新控件
// refreshControl 为 TableViewController 的属性,无需声明
self.refreshControl = [[UIRefreshControl alloc] init];// 添加刷新方法
[self.refreshControl addTarget:self action:@selector(downloadData) forControlEvents:UIControlEventValueChanged];
开始/停止刷新
// 判断是否正在刷新,readonly
BOOL isRefreshing = self.refreshControl.isRefreshing;// 开始刷新,在 TableViewController 中,下拉表格自动刷新,使用方法开始刷新时表格自动下拉
[self.refreshControl beginRefreshing];// 停止刷新,刷新完成后必须调用停止刷新方法
[self.refreshControl endRefreshing];
设置刷新控件属性
// 设置刷新控件的颜色
self.refreshControl.tintColor = [UIColor redColor];// 设置刷新控件下边的提示文字及文字的颜色
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"松开手开始刷新"];
Objective-C
VideoModel.h
// copy 属性,在设置数值的时候,如果有一方是可变的,会默认做一次 copy 操作,会建立新的副本
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *teacher;// 为了避免服务端返回的数值型数据是 null,可以把数值型的数据设置成 NSNumber
@property (nonatomic, copy) NSNumber *length;VideoCell.h
@class VideoModel;
@property (nonatomic, strong) VideoModel *videoModel;VideoCell.m
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *teacherLabel;
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;- (void)setVideoModel:(VideoModel *)videoModel { _videoModel = videoModel; self.nameLabel.text = videoModel.name;
self.teacherLabel.text = videoModel.teacher;
self.timeLabel.text = [NSString stringWithFormat:@"%@", videoModel.length];
}ViewController.h
@interface ViewController : UITableViewControllerViewController.m
// 表格数据源数组
@property (nonatomic, strong) NSArray *dataSourceArray;// 网络数据解析数据源
@property (nonatomic, strong) NSMutableArray *videosSourceArray;// 数据模型
@property (nonatomic, strong) VideoModel *videoModel;// 数据模型的值
@property (nonatomic, strong) NSMutableString *videoModelElementValueString;// 设置数据源数据 - (void)setDataSourceArray:(NSArray *)dataSourceArray {
_dataSourceArray = dataSourceArray; // 刷新表格
[self.tableView reloadData]; // 停止刷新,刷新完成后必须调用停止刷新方法
[self.refreshControl endRefreshing];
}// 懒加载 - (NSMutableArray *)videosSourceArray {
if (_videosSourceArray == nil) {
_videosSourceArray = [[NSMutableArray alloc] init];
}
return _videosSourceArray;
} - (NSMutableString *)videoModelElementValueString {
if (_videoModelElementValueString == nil) {
_videoModelElementValueString = [[NSMutableString alloc] init];
}
return _videoModelElementValueString;
}// 表格数据源方法 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.dataSourceArray.count;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { VideoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; cell.videoModel = self.dataSourceArray[indexPath.row]; return cell;
}// 下载解析数据 // 连接到表格刷新控件
- (IBAction)downloadData { NSURL *url = [NSURL URLWithString:@"http://192.168.88.200/videos/videos.xml"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:15.0];
NSURLSession *session = [NSURLSession sharedSession];// 异步执行
NSURLSessionDataTask *task = [session dataTaskWithRequest:request
completionHandler:^(NSData * _Nullable data,
NSURLResponse * _Nullable response,
NSError * _Nullable error) {if (error == nil && data != nil) {
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
}
}];[task resume];
} - (void)parserDidStartDocument:(NSXMLParser *)parser {
[self.videosSourceArray removeAllObjects];
} - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict { if ([elementName isEqualToString:@"video"]) {
self.videoModel = [[VideoModel alloc] init];
self.videoModel.videoId = @([attributeDict[@"videoId"] intValue]);
}
[self.videoModelElementValueString setString:@""];
} - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
[self.videoModelElementValueString appendString:string];
} - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName { if ([elementName isEqualToString:@"video"]) {
[self.videosSourceArray addObject:self.videoModel];
} else if (![elementName isEqualToString:@"videos"]) {
[self.videoModel setValue:self.videoModelElementValueString forKey:elementName];
}
} - (void)parserDidEndDocument:(NSXMLParser *)parser {// 主线程更新 UI
dispatch_async(dispatch_get_main_queue(), ^{self.dataSourceArray = self.videosSourceArray;
});
}
iOS - UIRefreshControl刷新数据的更多相关文章- 【iOS】Plist-XML-JSON数据解析
网络上数据传输通用的有XML.JSON等,iOS中也能够用Plist. 要进行传输数据.就要首先进行序列化: 1.序列化. 对象转换成二进制流.(这个一句话即可) .反序列化. 二进制流转换为对象等 ...
- iOS开发系列--数据存取
概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...
- SQL实现类似于自动刷新数据的功能
有时需要在SQL中,定时刷新某张表,比如说是要定时查询某张表的行数,通常做法就是手动的按F5去执行来刷新数据.但是如果这个定时查询历时较长,10分钟,或半小时,手动的话肯定是要崩溃了.貌似SQL没有像 ...
- iOS中的数据持久化方式
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
- ios的网络数据下载和json解析
ios的网络数据下载和json解析 简介 在本文中,笔者将要给大家介绍如何使用nsurlconnection 从网上下载数据,以及解析json数据格式,以及如何显示数据和图片的异步下载显示. 涉及的知 ...
- jsTree 的简单用法--异步加载和刷新数据
首先这两个文件是必须要引用的,还有就是引用 jQuery 文件就不说了: <link href="/css/plugins/jsTree/style.min.css" rel ...
- 解决JQuery中datatables设置隐藏显示列多次提交后台刷新数据的问题
此次项目开发过程中用到了Jquery的Datatables插件,无疑他是数据列表展示,解决MVC中同步过程中先走控制器后返回视图,查询数据过程中无法提示等待的弊端, 而且他所提供的各种方法也都有较强的 ...
- POI刷新数据后的函数(公式)更新问题
使用POI将Excel模板中的数据进行更新,这应该是很常见的操作 下面就贴上我的一小段代码 public class ModifyExcel { /** * @param fileName Excel ...
- 【转】iOS开发系列--数据存取
原文: http://www.cnblogs.com/kenshincui/p/4077833.html#SQLite 概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储 ...
随机推荐- fso查找被删除的文件
<html> <head> </head> <body> 源目录:<input id="txtOld" value=" ...
- 使用gnucash查看任意时间段内的所有者权益变动表
gnucash默认会以当年的会计账期显示所有者权益变动表 如果要看指定时间的所有者权益变动表,需要这样做 打开所有者权益变动表 点击上面的[选项] 如图 在常规中自行选择日期 确定后就能够看到指定时间 ...
- python-基础案例
范例一: 练习:元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值 ...
- 用ie调试的时候显示:脚本调试程序无法连接到目标进程,已附加调试程序。
解决方案如图所示: 解决方案: 在internet的选项工具中选中高级然后去掉禁止脚本调试的情况:
- SSDT Hook
一.效果图 二.分析 这里对NtCreateProcessEx做拦截,用WinDbg来定位该函数在SSDT中的记录地址: : kd> dd KeServiceDescriptorTable 80 ...
- 细数Android开源项目中那些频繁使用的并发库中的类
这篇blog旨在帮助大家 梳理一下前面分析的那些开源代码中喜欢使用的一些类,这对我们真正理解这些项目是有极大好处的,以后遇到类似问题 我们就可以自己模仿他们也写 出类似的代码. 1.ExecutorS ...
- Key Task
Problem Description The Czech Technical University is rather old - you already know that it celebrat ...
- NUMBER_GET_NEXT 获取编号 遇到关于按年度编号的问题
最近给财务做了一个平台,在系统创建一些特殊类型的合同,需要生成合同编号:财务要求 合同类型+公司代码 +年+三位流水号, eg:CP6008-2017001 SNRO 子对象数据元素就是 公司代码 不 ...
- 运行期以索引获取tuple元素-C++14(原创)
在编译期很容易根据索引来获取对应位置的元素,因为 tuple 的帮助函数 std::get<N>(tp) 就能获取 tuple 中第 N 个元素.然而我们却不能直接在运行期通过变量来获取 ...
- OTG驱动分析(一)
前一段时间弄了2个礼拜的OTG驱动调试,感觉精神疲惫啊.主要原因还是自己对OTG功能不了解造成的.现在终于完成但是对实质原理还有些模糊.所以自己重新总结一下.因为自己是菜鸟,所以用菜鸟的白话方式分析. ...
网络上数据传输通用的有XML.JSON等,iOS中也能够用Plist. 要进行传输数据.就要首先进行序列化: 1.序列化. 对象转换成二进制流.(这个一句话即可) .反序列化. 二进制流转换为对象等 ...
概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...
有时需要在SQL中,定时刷新某张表,比如说是要定时查询某张表的行数,通常做法就是手动的按F5去执行来刷新数据.但是如果这个定时查询历时较长,10分钟,或半小时,手动的话肯定是要崩溃了.貌似SQL没有像 ...
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
ios的网络数据下载和json解析 简介 在本文中,笔者将要给大家介绍如何使用nsurlconnection 从网上下载数据,以及解析json数据格式,以及如何显示数据和图片的异步下载显示. 涉及的知 ...
首先这两个文件是必须要引用的,还有就是引用 jQuery 文件就不说了: <link href="/css/plugins/jsTree/style.min.css" rel ...
此次项目开发过程中用到了Jquery的Datatables插件,无疑他是数据列表展示,解决MVC中同步过程中先走控制器后返回视图,查询数据过程中无法提示等待的弊端, 而且他所提供的各种方法也都有较强的 ...
使用POI将Excel模板中的数据进行更新,这应该是很常见的操作 下面就贴上我的一小段代码 public class ModifyExcel { /** * @param fileName Excel ...
原文: http://www.cnblogs.com/kenshincui/p/4077833.html#SQLite 概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储 ...
- fso查找被删除的文件
<html> <head> </head> <body> 源目录:<input id="txtOld" value=" ...
- 使用gnucash查看任意时间段内的所有者权益变动表
gnucash默认会以当年的会计账期显示所有者权益变动表 如果要看指定时间的所有者权益变动表,需要这样做 打开所有者权益变动表 点击上面的[选项] 如图 在常规中自行选择日期 确定后就能够看到指定时间 ...
- python-基础案例
范例一: 练习:元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值 ...
- 用ie调试的时候显示:脚本调试程序无法连接到目标进程,已附加调试程序。
解决方案如图所示: 解决方案: 在internet的选项工具中选中高级然后去掉禁止脚本调试的情况:
- SSDT Hook
一.效果图 二.分析 这里对NtCreateProcessEx做拦截,用WinDbg来定位该函数在SSDT中的记录地址: : kd> dd KeServiceDescriptorTable 80 ...
- 细数Android开源项目中那些频繁使用的并发库中的类
这篇blog旨在帮助大家 梳理一下前面分析的那些开源代码中喜欢使用的一些类,这对我们真正理解这些项目是有极大好处的,以后遇到类似问题 我们就可以自己模仿他们也写 出类似的代码. 1.ExecutorS ...
- Key Task
Problem Description The Czech Technical University is rather old - you already know that it celebrat ...
- NUMBER_GET_NEXT 获取编号 遇到关于按年度编号的问题
最近给财务做了一个平台,在系统创建一些特殊类型的合同,需要生成合同编号:财务要求 合同类型+公司代码 +年+三位流水号, eg:CP6008-2017001 SNRO 子对象数据元素就是 公司代码 不 ...
- 运行期以索引获取tuple元素-C++14(原创)
在编译期很容易根据索引来获取对应位置的元素,因为 tuple 的帮助函数 std::get<N>(tp) 就能获取 tuple 中第 N 个元素.然而我们却不能直接在运行期通过变量来获取 ...
- OTG驱动分析(一)
前一段时间弄了2个礼拜的OTG驱动调试,感觉精神疲惫啊.主要原因还是自己对OTG功能不了解造成的.现在终于完成但是对实质原理还有些模糊.所以自己重新总结一下.因为自己是菜鸟,所以用菜鸟的白话方式分析. ...







