//
// ViewController.m
// BookStore
//
// Created by cyd on 14-11-21.
// Copyright (c) 2014年 cyd. All rights reserved.
//
#import "IndexViewController.h"
#import "UIViewController+MMDrawerController.h"
@interface IndexViewController ()
@end
@implementation IndexViewController
int flag=0;
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title=@"图书列表";
// self.view.backgroundCo lor=[UIColor whiteColor];
[self creatCollectionView];
[self creatTableView];
[self setupLeftMenuButton];
[self setupRightBarButon];
// SaveDataModel *saveModel=[[SaveDataModel alloc]init];
// [saveModel writeIntoLoaldata];
[self tableViewInitShow];
[self getLocalData];
}
-(void)tableViewInitShow
{
_refreshHeaderTableView = [self refresh];
_refreshHeaderCollectionView = [self refresh];
[m_tableView addSubview:_refreshHeaderTableView];
}
-(EGORefreshTableHeaderView *)refresh
{
EGORefreshTableHeaderView *egoView=[[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.view.bounds.size.height, self.view.frame.size.width, self.view.bounds.size.height)];
egoView.delegate=self;
[egoView refreshLastUpdatedDate];
return egoView;
}
-(void)reloadTableViewDataSource
{
_reLoading=YES;
}
-(void)doneLoadingTableViewData
{
_reLoading = NO;
if (flag%2==0)
{
[_refreshHeaderTableView egoRefreshScrollViewDataSourceDidFinishedLoading:m_tableView];
[m_tableView reloadData];
}
else{
[_refreshHeaderCollectionView egoRefreshScrollViewDataSourceDidFinishedLoading:m_collectionView];
[m_collectionView reloadData];
}
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (flag%2==0)
[_refreshHeaderTableView egoRefreshScrollViewDidScroll:scrollView];
else{
[_refreshHeaderCollectionView egoRefreshScrollViewDidScroll:scrollView];
}
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (flag%2==0)
[_refreshHeaderTableView egoRefreshScrollViewDidEndDragging:scrollView];
else{
[_refreshHeaderCollectionView egoRefreshScrollViewDidEndDragging:scrollView];
}
}
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view
{
[self reloadTableViewDataSource];
[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];
}
- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view
{
return _reLoading;
}
- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view
{
return [NSDate date];
}
/////////////////////////////////////////////////////
-(UICollectionView *)creatCollectionView{
UICollectionViewFlowLayout *flowRight = [[UICollectionViewFlowLayout alloc] init];
m_collectionView= [[UICollectionView alloc]initWithFrame:CGRectMake(0, 60,self.view.frame.size.width,self.view.frame.size.height) collectionViewLayout:flowRight];
m_collectionView.dataSource=self;
m_collectionView.delegate=self;
m_collectionView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:m_collectionView];
return m_collectionView;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return listData.count;
}
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSString * CellIdentifier =[NSString stringWithFormat:@"GradientCell%ld",indexPath.row];
[m_collectionView registerClass:[UICollectionViewCell class ]forCellWithReuseIdentifier:CellIdentifier];
UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
NSDictionary *group=[[NSDictionary alloc] initWithObjectsAndKeys:indexPath,@"indexpath",cell,@"cell",nil];
[NSThread detachNewThreadSelector:@selector(loadImageCollectionView:) toTarget:self withObject:group];
[self creatLabelPicture:cell :indexPath :CGRectMake(5, 105, 70, 30) :@"title"];
return cell;
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(96, 100);
}
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(0, 20, 20, 20);
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
BookInfoViewController *bookInfo=[[BookInfoViewController alloc]init:[listData objectAtIndex:indexPath.row]];
[self.navigationController pushViewController:bookInfo animated:true];
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 50;
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 2;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
-(UITableView *)creatTableView
{
m_tableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 60, [[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height) style:UITableViewStylePlain];
m_tableView.dataSource=self;
m_tableView.delegate=self;
m_tableView.backgroundColor = [UIColor clearColor];
[self.view addSubview:m_tableView];
return m_tableView;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *identify = [NSString stringWithFormat:@"cell%ld",indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identify];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identify];
}
NSDictionary *group=[[NSDictionary alloc] initWithObjectsAndKeys:indexPath,@"indexpath",cell,@"cell",nil];
[NSThread detachNewThreadSelector:@selector(loadImageTableView:) toTarget:self withObject:group];
[self creatLabel:cell :indexPath :CGRectMake(105, 3, 200, 20) :@"\t" :@"title"];
[self creatLabel:cell :indexPath :CGRectMake(105, 29, 200, 20) :@"价格:":@"price"];
[self creatLabel:cell :indexPath :CGRectMake(105, 49, 200, 20) :@"出版日期:":@"pubdate"];
[self creatLabel:cell :indexPath :CGRectMake(105, 69, 200, 20) :@"出版社:":@"publisher"];
[self creatLabelSpecial:cell :indexPath :CGRectMake(105, 88, 200, 20) :@"作者:":@"author"];
return cell;
}
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
BookInfoViewController *bookInfo=[[BookInfoViewController alloc]init:[listData objectAtIndex:indexPath.row]];
[self.navigationController pushViewController:bookInfo animated:true];
}
///////////////////////////////////////////////////////////////////////////
-(void)creatLabelSpecial
UITableViewCell *)cell
NSIndexPath *)indexPath
CGRect)frame
NSString *)leftHalf
NSString *)forkey
{
UILabel *bookInfo = [[UILabel alloc] initWithFrame:frame];
NSArray *rightHalf=[[listData objectAtIndex:indexPath.row]objectForKey:forkey];
NSString *bookText=[NSString stringWithFormat:@"%@%@",leftHalf,rightHalf[0]];
bookInfo.text=bookText;
[cell addSubview:bookInfo];
}
-(void)creatLabel
UITableViewCell *)cell
NSIndexPath *)indexPath
CGRect)frame
NSString *)leftHalf
NSString *)forkey
{
UILabel *bookInfo = [[UILabel alloc] initWithFrame:frame];
NSString *rightHalf=[[listData objectAtIndex:indexPath.row]objectForKey:forkey];
NSString *bookText=[NSString stringWithFormat:@"%@%@",leftHalf,rightHalf];
bookInfo.text=bookText;
[cell addSubview:bookInfo];
}
////////////////////////////////
-(void)loadImageTableView:(NSDictionary *)group
{
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 2, 70, 100)];
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:[[[listData objectAtIndex:[[group objectForKey:@"indexpath"] row]] objectForKey:@"images"] objectForKey:@"small"]]];
UIImage *img=[UIImage imageWithData:data];
imageView.image=img;
[[group objectForKey:@"cell"] addSubview:imageView];
}
-(void)creatLabelPicture
UICollectionViewCell *)cell
NSIndexPath *)indexPath
CGRect)frame
NSString *)forkey
{
UILabel *labelPicture = [[UILabel alloc] initWithFrame:frame];
NSString *pictureName=[[listData objectAtIndex:indexPath.row]objectForKey:forkey];
labelPicture.text=pictureName;
[labelPicture setTextColor:[UIColor blackColor]];
labelPicture.font =[UIFont systemFontOfSize:10];
labelPicture.lineBreakMode=NSLineBreakByCharWrapping;
labelPicture.numberOfLines=0;
[cell addSubview:labelPicture];
}
-(void)loadImageCollectionView:(NSDictionary *)group
{
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(5, 2, 70, 100)];
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:[[[listData objectAtIndex:[[group objectForKey:@"indexpath"] row]] objectForKey:@"images"] objectForKey:@"small"]]];
UIImage *img=[UIImage imageWithData:data];
imageView.image=img;
[[group objectForKey:@"cell"] addSubview:imageView];
}
-(void)getLocalData
{
ReadDataModel *readData=[[ReadDataModel alloc]init];
NSArray *arry=[readData readData];
listData=arry;
NSLog(@"%@",[[[arry objectAtIndex:0]objectForKey:@"images"]objectForKey:@"small"]);
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [listData count];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 120.0;
}
////////////////////////////////////////////////////////
- (void)setupLeftMenuButton
{
MMDrawerBarButtonItem * leftDrawerButton = [[MMDrawerBarButtonItem alloc] initWithTarget:self action:@selector(leftDrawerButtonPress:)];
[self.navigationItem setLeftBarButtonItem:leftDrawerButton];
}
- (void)leftDrawerButtonPress
id)sender
{
[self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];
}
-(void)setupRightBarButon{
UIBarButtonItem *btnSave = [[UIBarButtonItem alloc]
initWithTitle:@"图片浏览"
style:UIBarButtonItemStylePlain
target:self
action:@selector(clickBookList:)];
self.navigationItem.rightBarButtonItem = btnSave;
}
-(void)clickBookList
id)sender
{ if(flag%2==0){
[self creatCollectionView];
//[self refresh];
[m_collectionView addSubview:_refreshHeaderCollectionView];
[self.view bringSubviewToFront:m_collectionView];
}
else
{
[self.view bringSubviewToFront:m_tableView];
}
flag++;
NSLog(@"%d",flag);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
分享到:
相关推荐
本文将详细介绍如何创建一个自定义的iOS刷新框架,并探讨其核心组件和实现原理。 首先,我们要理解上拉和下拉刷新的基本概念。上拉刷新通常用于在用户到达列表底部时加载更多内容;下拉刷新则是在用户滚动到列表...
在iOS应用开发中,刷新和加载是两个至关重要的概念,它们直接影响着用户的交互体验和数据的实时性。本文将深入探讨这两个概念,并提供相应的实现策略和技术细节。 首先,我们来理解“刷新”(Reload)的概念。刷新...
在iOS开发中,刷新控件是一种常见的用户交互元素,它允许用户通过下拉或上拉操作来触发数据的重新加载。本压缩包“ios-刷新控件,多种动画.zip”显然是一个专门针对iOS平台,提供下拉刷新功能的组件库。下面我们将...
在iOS开发中,刷新框架是应用中不可或缺的一部分,它们为用户提供了流畅的下拉刷新和上拉加载更多功能。本文将详细介绍"ios-一款简介易用的刷新框架,支持水平刷新.zip"中提供的SYRefresh框架,它是一款适用于...
在iOS开发中,用户界面的交互性和流畅性是至关重要的,而下拉刷新和上拉加载更多功能就是提升用户体验的关键之一。"MJRefresh"库正是这样一款为iOS开发者设计的,用于实现下拉刷新和上拉加载的优秀开源组件。 **...
在iOS应用开发中,"下拉刷新"是一种常见的功能,让用户能够通过向下拉动表格视图(UITableView)来获取最新的数据。这种设计模式被广泛应用于新闻、社交媒体和其他需要实时更新内容的应用中。iOS提供了内置的支持来...
总之,"IOS7呈现IOS6水滴刷新效果修正版本"是一个旨在保留和改进经典iOS刷新体验的开发实践。它不仅体现了iOS设计的演变,也展示了如何通过编程技术来实现跨版本的兼容性和定制化设计。对于iOS开发者来说,这是一个...
在iOS开发中,下拉刷新(Pull-to-Refresh)是一种常见的用户交互模式,它允许用户通过在列表顶部向下拉动来加载更多数据或更新现有数据。本教程将介绍如何使用EGOTableViewPullRefresh开源库在iOS应用中实现下拉刷新...
iOS 图像导航栏刷新 INBPullToRefresh ,INBPullToRefresh 是用于 iOS 上的图像导航栏刷新库。
总结来说,要实现"Swift-iOS界面刷新时保持UITextField、UITextView、UISearchBar响应",关键在于保存和恢复第一响应者,以及合理控制界面刷新时机。通过这些技巧,不仅可以提供流畅的用户体验,还能确保用户在刷新...
在Android开发中,为了提升用户体验,常常需要实现类似iOS风格的下拉刷新和加载更多的功能。这个"Android例子源码IOS风格的下拉刷新与加载更多列表组件"提供了一个高效且美观的解决方案。下面我们将详细探讨这个组件...
在iOS开发中,"刷新加载"是一个非常关键的特性,特别是在设计用户界面和交互时。这个功能通常用于数据流更新,比如新闻、社交媒体或者电商应用中的列表内容。当我们提到"刷新Header And Footer",它指的是在界面上...
总之,MAGearRefreshControl是一款极具创意的iOS刷新控件,它通过独特的齿轮动画,使得用户在等待数据加载时能获得更加生动有趣的体验。通过学习和使用这个开源项目,开发者不仅可以快速为应用添加下拉刷新功能,还...
在iOS应用开发中,使用各种框架能够极大地提升开发效率,优化用户体验。以下是对标题和描述中提及的四个关键框架的详细解释: 1. **数据请求框架**:在iOS开发中,最常用的数据请求框架是AFNetworking。这是一个...
MJRefresh是由开发者Michael Jiang创建并维护的一个轻量级、高度自定义的iOS刷新框架。它支持Swift和Objective-C两种语言,并且易于集成到现有的项目中。通过使用MJRefresh,开发者可以快速地为UITableView添加下拉...
这个“iOS下拉刷新WebView”的主题就涉及到了如何在iOS应用中集成下拉刷新功能到WKWebView或者UIWebView上。 首先,我们要理解下拉刷新(Pull-to-Refresh)的基本概念。这是一种常见的用户界面设计模式,用户在滚动...
在iOS开发中,"下拉刷新"是一种常见的用户交互功能,允许用户通过向下滑动屏幕来更新内容,通常用于新闻应用、社交媒体应用等,确保用户能够获取最新的信息。本示例将聚焦于如何在iOS应用中实现下拉刷新功能。 在...
在iOS开发中,下拉刷新(Pull-to-Refresh)是一种常见的功能,允许用户通过向下滚动视图来触发数据的更新。这一特性广泛应用于新闻应用、社交媒体应用等,为用户提供即时刷新内容的方式。本文将深入探讨如何在iOS...
IOS下拉刷新的DEMO 大家来看一眼...
在iOS开发中,"底部下拉刷新"是一个常见的功能,特别是在使用UITableView或UICollectionView时,用于加载更多数据。这个功能让用户可以方便地查看更多的内容而无需手动滚动到页面顶部。以下是对这一主题的详细阐述:...