- 浏览: 268839 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jimode2013:
thanks
UIPanGestureRecognizer学习笔记 -
白色蜻蜓:
- (void) loadView { //opaquevie ...
UIWebView中使用UIActivityIndicatorView
1、导入EGO框架,即附件中的EGO.ZIP中的两个类文件,以及一些相应的图片,在第二个tableview.zip文件中
2、我的.h文件
#import <UIKit/UIKit.h> #import "EGORefreshTableHeaderView.h" @interface QuanWenArt : UIViewController<UITableViewDelegate, UITableViewDataSource, EGORefreshTableHeaderDelegate,UIScrollViewDelegate> { // CGFloat height; EGORefreshTableHeaderView *_refreshHeaderView; BOOL _reloading; NSInteger cellHeight; } @property (nonatomic, retain) UITableView *table; @property (nonatomic ,retain) NSArray *data; @end
3.我的.m文件
#import "QuanWenArt.h" #import "AppDelegate.h" #import "MyNav.h" #import "JSON.h" @interface QuanWenArt () @end @implementation QuanWenArt @synthesize table = _table; @synthesize data = _data; -(void)dealloc { [super dealloc]; [_table release]; [_data release]; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { NSLog(@"----------------------------------------------------------"); self.navigationItem.title = @"文章"; // [self.navigationItem.backBarButtonItem setBackButtonBackgroundImage:[UIImage imageNamed:@"navbar.png"] // forState:UIControlStateNormal // barMetrics:UIBarMetricsDefault]; // //自定义返回按钮 UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; backButton.frame = CGRectMake(0, 0, 68, 31); backButton.backgroundColor = [UIColor clearColor]; [backButton setBackgroundImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal]; [backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButton]; self.navigationItem.leftBarButtonItem = backBarButton; } return self; } - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"这里是QuanWenArt类的viewDidLoad方法"); self.table = [[[UITableView alloc] initWithFrame: CGRectMake(0.0, 0.0, 320.0, 480.0) style: UITableViewStylePlain] autorelease]; self.table.delegate = self; self.table.dataSource = self; self.view = self.table; //初始化数据源 AppDelegate *delegate= [[UIApplication sharedApplication] delegate]; self.data = delegate.artsOfQWData; // NSLog(@"list is:%@",self.data); //增加下拉刷新加载数据 1; _refreshHeaderView=[[EGORefreshTableHeaderView alloc] initWithFrame: CGRectMake(0, 440, 320, 480)]; _refreshHeaderView.delegate=self; [self.table addSubview:_refreshHeaderView]; [_refreshHeaderView refreshLastUpdatedDate]; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.data.count; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: @"cell"]; //获取cell [ cell setBackgroundColor:[ UIColor blueColor ] ] ; //每次都要清空一下,否则cell中的内容会重叠 for (UIView *subview in [cell.contentView subviews]) [subview removeFromSuperview]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle: UITableViewCellStyleValue1 reuseIdentifier: @"cell"] autorelease]; } cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //表格单元右侧的披露按钮 cell.selectionStyle = UITableViewCellSelectionStyleGray; int selectedIndex = [indexPath indexAtPosition: 1]; //获取行号 for (int i=0; i<self.data.count; i++) { if (i == selectedIndex) { NSDictionary *dict = [self.data objectAtIndex:i]; // NSString *idstr = [dict objectForKey:@"id"]; NSString *titlestr = [dict objectForKey:@"title"]; // NSString *authorstr = [dict objectForKey:@"author"]; // NSLog(@"id=%@,title=%@,author=%@",idstr,titlestr,authorstr); cell.textLabel.text = titlestr; cellHeight = cell.frame.size.height; break; } } return cell; } - (void)backAction { [self.navigationController popViewControllerAnimated:YES]; } //此方法是开始读取数据 增加下拉刷新加载数据 2; - (void)reloadTableViewDataSource { NSLog(@"start"); _reloading = YES; //打开线程,读取下一页数据 [NSThread detachNewThreadSelector:@selector(requestNext) toTarget:self withObject:nil]; } //增加下拉刷新加载数据 3; - (void)requestNext { NSAutoreleasePool * pool=[[NSAutoreleasePool alloc] init]; //请求下一页数据 NSMutableURLRequest *req = [[NSMutableURLRequest alloc] init]; NSString *strURL = [NSString stringWithFormat:@"http://192.168.1.49:8080/exz/xmlli?fl=exz-qw-tb&op=new&ps=10&pn=2"]; NSURL *connection = [[NSURL alloc] initWithString:strURL]; [req setURL:connection]; [req setHTTPMethod:@"GET"]; NSURLResponse *rep = nil; NSError *error = nil; NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&rep error:&error]; if(error) { NSLog(@"服务器请求失败"); }else { if (data) { NSLog(@"服务器请求成功"); NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSArray *arr = [jsonStr JSONValue]; AppDelegate *delegate= [[UIApplication sharedApplication] delegate]; [delegate.artsOfQWData addObjectsFromArray:arr]; self.data = delegate.artsOfQWData; [jsonStr release]; } } [pool release]; //回到主线程跟新界面 [self performSelectorOnMainThread:@selector(dosomething) withObject:nil waitUntilDone:YES]; } //增加下拉刷新加载数据 4; -(void)dosomething { int count=[self.data count]; NSString *str1 = [NSString stringWithFormat:@"%d",count]; NSString *str2 = [NSString stringWithFormat:@"%d",self.table.contentSize.height]; NSLog(@"-->%@",str1); NSLog(@"-->%@",str2); // // if(100*count>2000) // { // // self.table.contentSize=CGSizeMake(320, 40*count); //设置显示上来加载那一块view的CGRECT _refreshHeaderView.frame=CGRectMake(0, cellHeight*count, 320, 480); // } [self.table reloadData]; [self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:0]; } //此方法是结束读取数据 - (void)doneLoadingTableViewData{ // model should call this when its done loading _reloading = NO; [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.table]; NSLog(@"end"); } #pragma mark - #pragma mark UIScrollViewDelegate Methods - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ [_refreshHeaderView egoRefreshScrollViewDidScroll:self.table]; } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ [_refreshHeaderView egoRefreshScrollViewDidEndDragging:self.table]; } #pragma mark - #pragma mark EGORefreshTableHeaderDelegate Methods - (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{ [self reloadTableViewDataSource]; //[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:0.5]; } - (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{ return _reloading; // should return if data source model is reloading } - (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{ return [NSDate date]; // should return date data source was last changed } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } @end
- EGO.zip (3.7 KB)
- 下载次数: 26
- TableView.zip (204 KB)
- 下载次数: 29
发表评论
-
EXC_BAD_ACCESS
2013-06-21 17:59 962EXC_BAD_ACCESS 这个错误,可以这么说,90%的 ... -
NSAssert
2013-06-08 09:55 991You can use NSAssert() to deb ... -
UIWebView中的图片用本地document目录中的
2013-04-28 14:34 0-(void)webViewDidStartLoad:(UI ... -
如何点击链接直接跳转到app store指定应用下载页面
2013-03-21 14:42 2808跳转到应用下载页面: NSString *str = [ ... -
ios面试题收集一(附基本答案)
2013-03-20 11:40 1477此份面试题包含40个题目,是现在网上能搜索到的一个比较热的一 ... -
IOS5.1.1完美越狱XCODE测试出现10004003的问题
2013-03-15 11:23 1140我的APP已经上线了,但是公司有几个越狱后IOS5.1.1 ... -
MKLocalSearch用法
2013-03-08 15:21 6823原文出处:http://phpadvocate.com/bl ... -
NSString-NSDate类型转换和CustomBar的总结
2012-12-21 09:53 1344如何将一个字符串@"2012-12-21" ... -
ios判断本地文件是否存在
2012-12-17 17:36 1182NSString *path = [[NSBundle ... -
UIWebView响应单机事件
2012-12-14 11:40 1156在UIViewController中,加入协议UIGes ... -
APP适配iphone5 and ihpone4
2012-12-09 13:22 2028首先加入Default-568@2x.png得开机图片 CG ... -
百度地图API(1)
2012-12-04 14:25 2454问题 2012-10-26 11:37:05. ... -
iOS常用控件尺寸大集合
2012-11-28 16:36 1828元素控件 尺寸(pts) Window(含状态栏) 320 x ... -
UIPanGestureRecognizer学习笔记
2012-11-27 14:59 17632好久没来写笔记了,原因很简单,最近一直坐java网站,没顾上学 ... -
发送邮件---iphone开发
2012-09-27 14:00 13831、导入MessageUI.framework包 2、引入头 ... -
nsarray倒序排序
2012-09-24 16:28 2344NSSortDescriptor *descripto ... -
UITextField限制输入类型
2012-09-05 17:37 7324限制只能输入特定的字 ... -
怎么把椭圆的UISearchBar改成圆角矩形?
2012-08-29 13:03 4635for (UIView *subview in sel ... -
uitableview出现重叠的处理办法
2012-08-24 10:45 749for (UIView *subview in ... -
XIB那点问题
2012-08-09 10:49 9811、运行错误: this class is not key ...
相关推荐
可以使用Flexbox或Grid布局来创建响应式的选项卡,通过CSS动画实现上拉刷新时的旋转效果,以及下拉加载时的加载提示。同时,要确保在各种屏幕尺寸和方向下都能提供良好的视觉体验。 6. **文件结构**: - `index....
为了增强用户体验,许多应用引入了下拉回弹刷新效果,就像QQ空间和新浪微博那样。这种效果不仅增加了交互的趣味性,还使得用户能方便地获取最新的数据。本文将深入探讨如何实现这种Android ListView的下拉回弹刷新...
1. 概念:下拉加载是指用户向下滚动到页面底部时,自动加载更多的内容,通常是分页数据的下一页。这种方式减少了用户翻页的繁琐操作,使得内容的浏览更加流畅。 2. 实现原理:下拉加载通过监听滚动事件,判断内容...
"listview上拉加载下一页,下拉加载上一页"的功能就显得尤为重要,这通常被称为“无限滚动”或“上拉加载更多”与“下拉刷新”的功能。 标题中的"listview上拉加载下一页,下拉加载上一页"意味着我们要实现两个主要...
在ListView中,可以使用SwipeRefreshLayout作为父容器,包裹ListView,实现下拉刷新效果。上拉加载通常需要自定义适配器并添加监听器,当用户滚动到底部时,触发加载更多数据的逻辑。 2. 本地缓存:为了提高应用...
本教程将深入探讨如何使用xListView框架实现异步加载网络图片,并且支持上拉加载更多和下拉刷新功能,提升用户体验。 首先,xListView是Android平台上的一个开源库,它扩展了原生的ListView组件,提供了更丰富的...
"手机端 dropload 实现上拉加载 下拉刷新"这个话题关注的就是如何通过JavaScript技术来解决这个问题,为用户提供更好的浏览体验。Dropload 是一种常见的移动端网页组件,它允许用户在滚动到底部时自动加载更多内容...
在Web开发中,"上拉加载下拉刷新"(Pull-to-Refresh 和 Infinite Scroll)是提升用户体验的重要功能,尤其在移动设备上广泛使用。这些功能允许用户通过在页面顶部下拉来刷新内容,或者在页面底部上拉来加载更多数据...
在用户滚动到顶部时实现“下拉刷新”以及在滚动到底部时触发“加载更多”功能,是现代移动应用中常见的用户体验设计。下面将详细介绍如何自定义GridView以实现这两个特性。 首先,理解下拉刷新和加载更多的概念。...
总结来说,下拉刷新和上拉底部加载是Android应用中增强用户体验的重要功能,通过合理的布局、事件监听和后台数据处理,可以实现高效、流畅的滚动加载效果。在实际开发中,需要根据项目需求进行适当调整和优化,以...
2. **用户体验**:确保动画效果平滑,刷新和加载状态的反馈清晰,避免用户在操作过程中感到困惑。 3. **兼容性**:测试不同浏览器和设备的兼容性,包括桌面端和移动端,确保功能在各种环境下都能正常工作。 4. **...
6. **优化体验**:为了提供更好的用户体验,还可以设置下拉刷新和上拉加载的动画效果,自定义头部和底部的视图,以及在无更多数据时的提示。 总结来说,XListView是一个强大的Android组件,它通过简单的配置和接口...
在移动应用开发中,"上拉刷新下拉加载"是一种常见的用户体验设计模式,它极大地提升了用户在滚动浏览数据时的互动性和效率。这种设计通常应用于列表或者网格视图,允许用户通过向上滑动屏幕来刷新内容,以及向下滑动...
在Android应用开发中,上拉加载和下拉刷新是常见的用户界面交互功能,极大地提升了用户体验。上拉加载常用于分页加载更多数据,而下拉刷新则用于更新当前显示的数据。下面将详细介绍如何在Android中实现这两种功能。...
"移动端下拉刷新、上拉加载更多插件"就是针对这一需求而设计的一种交互组件,它极大地提升了用户在浏览内容时的便利性和满意度。这类插件主要应用于新闻资讯、电商商品列表等需要不断滚动更新内容的场景。下面将详细...
为了提供更好的用户体验,通常会添加下拉刷新和上拉加载更多的功能。这些功能使得用户可以在滚动到列表顶部时更新数据(下拉刷新),或者在滚动到底部时加载更多数据(上拉加载更多)。这种设计常见于许多社交媒体...
在移动应用开发中,"XListView_下拉刷新上拉加载"是一个常见的组件,它用于实现列表视图的滚动交互,比如用户向上滑动时触发数据的刷新,向下滑动时加载更多数据。这种功能在社交应用、电商应用等场景中尤为常见,...
在Android应用开发中,"下拉刷新"和"加载更多"功能已经成为移动应用的标准特性,尤其是在数据流式显示的应用场景中,如新闻阅读、社交媒体和电商应用等。这两个功能极大地提升了用户体验,使得用户能够轻松获取最新...