// // SearchViewController.m // RedAnt ERP Mobile // // Created by Ray on 9/1/15. // Copyright (c) 2015 United Software Applications, Inc. All rights reserved. // #import "SearchViewController.h" #import "const.h" #import "iSalesNetwork.h" #import "CategoryCellNPD.h" #import "DetailViewController.h" #import "ContactListViewController.h" #import "MainViewController.h" #import "DefaultAppearance.h" #import "UIColor+JK_HEX.h" #import "CartUtils.h" #define DEF_CELL_HEIGHT 44 #define DEF_TABLE_HEIGHT 44 #define LINE_WIDTH 0 #define CELL_MARGIN 0 #define LABEL_MARGIN 5 @interface SearchViewController () @property (nonatomic,assign) BOOL addAll; @property (nonatomic,assign) UIInterfaceOrientation toOrientation;///<屏幕将要旋转到的方向 @property (nonatomic,assign) BOOL disappear; @property (nonatomic,strong) NSOperationQueue *dataOperationQueue; @end @implementation SearchViewController - (NSOperationQueue *)dataOperationQueue { if (!_dataOperationQueue) { _dataOperationQueue = [[NSOperationQueue alloc] init]; _dataOperationQueue.maxConcurrentOperationCount = 1; } return _dataOperationQueue; } -(void) reload_container_getdata:(bool)update_data { if(self.disable_refresh) return; [super reload_container_getdata:update_data]; if(update_data) { self.offset = 0; // [self.content_data removeAllObjects]; [self reload]; } else { [self.collectionview reloadData]; } return; // if(!self.showDetail) // return; // NSArray* a= self.childViewControllers; // // for (int i=0;i0) // { // self.addWishBtn.enabled = true; // self.addCartBtn.enabled = true; // self.addPortfolioBtn.enabled=true; // } self.select_count=count; checked=@"true"; } else { self.selectallBtn.tag = 0; [self.selectallBtn setTitle:@"Select"]; // self.addWishBtn.enabled = false; // self.addCartBtn.enabled = false; // self.addPortfolioBtn.enabled=false; checked=@"false"; } for(int i=0;i // }]; // [self showCategory]; } -(void) showCategory { if(self.showDetail==false) return; // UIInterfaceOrientation orientation =[UIApplication sharedApplication].statusBarOrientation; // int width=175; // // int height; // if(orientation == UIDeviceOrientationLandscapeLeft ||orientation == UIDeviceOrientationLandscapeRight) // { // width = 370; // // height = 400; // } // else // { // // height = 300; // width = 175; // } // CGRect frame = CGRectMake(0, 48, self.view.bounds.size.width , self.view.bounds.size.height-48); [UIView animateWithDuration:0.5 animations:^{ self.collectionview.frame=frame; }]; self.collectionview.autoresizingMask = self.collectionview.autoresizingMask | UIViewAutoresizingFlexibleWidth; self.showDetail = false; // self.cagegoryLabel.hidden = false; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)onAddCartClick:(id)sender { [CartUtils add_to_cart:self selectorholder:self selector:@selector(addtocart)]; return; UIApplication * app = [UIApplication sharedApplication]; AppDelegate *appDelegate = (AppDelegate *)[app delegate]; MainViewController* main_vc=(MainViewController*)appDelegate.main_vc; if(appDelegate.bLogin==false) { LoginViewController * loginvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; // loginvc.delegate = self; // loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 loginvc.returnValue = ^(bool blogin){ // UIApplication * app = [UIApplication sharedApplication]; // AppDelegate *appDelegate = (AppDelegate *)[app delegate]; if(blogin) { if(/*appDelegate.user_type==USER_ROLE_EMPLOYEE*/ true) { [main_vc checklogin:false]; if(appDelegate.can_create_order) { NSString* msg =@""; if(appDelegate.contact_id.length>0) { msg = [msg stringByAppendingString:@"\n\nCustomer:"]; msg = [msg stringByAppendingString:appDelegate.customerInfo[@"customer_name"]]; } UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:msg delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil),NSLocalizedString(@"Add to new order", nil), nil]; // alert. [alert show]; } else { UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil), nil]; // alert. [alert show]; } } else { [main_vc checklogin:false]; [self addtocart]; } } // self.offset = 0; // [self.content_data removeAllObjects]; // [self loadpage]; // // [[self navigationController] setNavigationBarHidden:YES animated:NO]; }; UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ; // [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi]; navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种 [self presentViewController:navi animated:YES completion:^{ // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); DebugLog(@"LoginViewController present........."); // self.btop = false; // <#code#> }]; } else { if(/*appDelegate.user_type==USER_ROLE_EMPLOYEE&&/*appDelegate.contact_id==nil&&*/appDelegate.order_code==nil) { // [main_vc checklogin:false]; if(appDelegate.can_create_order) { NSString* msg =@""; if(appDelegate.contact_id.length>0) { msg = [msg stringByAppendingString:@"\n\nCustomer:"]; msg = [msg stringByAppendingString:appDelegate.customerInfo[@"customer_name"]]; } UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:msg delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil),NSLocalizedString(@"Add to new order", nil), nil]; // alert. [alert show]; } else { UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil), nil]; // alert. [alert show]; } } else { if(appDelegate.order_code==nil) [ self neworder]; else [self addtocart]; } } } -(void) neworder { UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Create Order"]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* return_json = [iSalesNetwork new_Order]; dispatch_async(dispatch_get_main_queue(), ^{ [waitalert dismissWithClickedButtonIndex:0 animated:FALSE]; if([[return_json valueForKey:@"result"] intValue]==2) { int result=[[return_json valueForKey:@"result"] intValue]; if(result==2) { //successed. NSString* order_code = [return_json valueForKey:@"orderCode"]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; appDelegate.order_code = order_code; appDelegate.order_status = [[return_json valueForKey:@"orderStatus"] intValue]; [self addtocart]; // [self ReloadData]; // if(self.shopCartBlock!=nil) // { // UIImage* img=[self photoStackView:self.photoStack photoForIndex:0]; // // // CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100); // UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect]; // iv.image = img; // // [self.contentView addSubview:iv]; // self.shopCartBlock(iv); // // } } } else { [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add To Cart" controller:self] ; } }); }); } - (IBAction)onAddPortfolioClick:(id)sender { UIApplication * app = [UIApplication sharedApplication]; AppDelegate *appDelegate = (AppDelegate *)[app delegate]; MainViewController* main_vc=(MainViewController*)appDelegate.main_vc; if(appDelegate.bLogin==false) { LoginViewController * loginvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; // loginvc.delegate = self; // loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 loginvc.returnValue = ^(bool blogin){ if(blogin) { [main_vc checklogin:false]; [self checkToolBar]; [self addtoportfolio]; } }; UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ; // [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi]; navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种 [self presentViewController:navi animated:YES completion:^{ // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); DebugLog(@"LoginViewController present........."); // self.btop = false; // <#code#> }]; } else { [self addtoportfolio]; } } - (IBAction)onAddWishlistClick:(id)sender { UIApplication * app = [UIApplication sharedApplication]; AppDelegate *appDelegate = (AppDelegate *)[app delegate]; MainViewController* main_vc=(MainViewController*)appDelegate.main_vc; if(appDelegate.bLogin==false) { LoginViewController * loginvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; // loginvc.delegate = self; // loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 loginvc.returnValue = ^(bool blogin){ if(blogin) { [main_vc checklogin:false]; [self addtowish]; } }; UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ; // [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi]; navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种 [self presentViewController:navi animated:YES completion:^{ // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); DebugLog(@"LoginViewController present........."); // self.btop = false; // <#code#> }]; } else { [self addtowish]; } } -(void) addtocart { NSMutableDictionary* items =[[self.category_data objectForKey:@"items"] mutableCopy]; int count = [[items valueForKey:@"count"] intValue]; NSMutableArray* checked = [[NSMutableArray alloc] init]; for(int i=0;i 1) { return; } dispatch_async(dispatch_get_main_queue(), ^{ if(self.loadall) { if(self.showalert) { self.showalert=false; [RAUtils message_alert:@"All loaded" title:@"Loading items" controller:self] ; } return; } self.mum.hidden = false; [self.mum startAnimating]; self.mum.center = self.view.center; self.isrefreshing=true; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* category_more=[iSalesNetwork Search:self.offset limit:20 keywords:self.keywords matchfull:self.loadmore_matchfull]; dispatch_async(dispatch_get_main_queue(), ^{ [self.mum stopAnimating]; self.isrefreshing=false; if (self.dataOperationQueue.operationCount > 1) { return; } NSDictionary* more_items=[category_more objectForKey:@"items"]; if([[category_more valueForKey:@"result"] intValue]==2) { // self.category_data = category_data; NSMutableDictionary* items_json= [[self.category_data objectForKey:@"items"] mutableCopy]; int count =[[more_items valueForKey:@"count"] intValue]; for(int i=0;i 1) { return; } dispatch_async(dispatch_get_main_queue(), ^{ if(self.isrefreshing) return; self.showalert=true; self.isrefreshing=true; self.loadall = false; UIRefreshControl *reF = (UIRefreshControl *)[self.collectionview viewWithTag:200]; [reF endRefreshing]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; self.label_net_err.hidden=true; self.collectionview.hidden=true; self.mum.center = self.view.center; self.mum.hidden = false; [self.mum startAnimating]; self.loadmore_matchfull = self.switch_matchfull.isOn; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSDictionary* category_data=[iSalesNetwork Search:0 limit:20 keywords:self.keywords matchfull:self.switch_matchfull.isOn]; dispatch_async(dispatch_get_main_queue(), ^{ [self.mum stopAnimating]; self.isrefreshing=false; if (self.dataOperationQueue.operationCount > 1) { return; } self.category_data = [category_data mutableCopy]; [self.collectionview reloadData]; if([[category_data valueForKey:@"result"] intValue]==2) { self.collectionview.hidden=false; NSDictionary * item_json = [self.category_data objectForKey:@"items"]; self.offset =[[item_json valueForKey:@"count"] intValue]; int total = [[self.category_data valueForKey:@"item_total_count"]intValue]; if(total<2) { self.labelTotal.text = [NSString stringWithFormat:@"Total %d item",total]; if(total==1) { NSDictionary * detail_item = [item_json objectForKey:@"item_0"]; NSString* detail_id= [detail_item valueForKey:@"product_id"] ; [self showDetailat:detail_id category_id:nil name:[detail_item objectForKey:@"fash_name"] index:0]; } } else self.labelTotal.text = [NSString stringWithFormat:@"Total %d items",total]; } else if([[category_data valueForKey:@"result"] intValue]==RESULT_NET_ERROR) { self.collectionview.hidden=true; self.label_net_err.hidden=false; } else { [RAUtils message_alert:[category_data valueForKey:@"err_msg"] title:@"Search" controller:self] ; } self.isrefreshing=false; }); }); }); } -(void) reload { __weak typeof(self) weakself = self; NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ if (weakself) { __strong typeof(weakself) strongself = weakself; [strongself operation_reload]; } }]; [self.dataOperationQueue addOperation:operation]; } -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation]; if (UIInterfaceOrientationIsLandscape(orientation)|| UIInterfaceOrientationIsPortrait(orientation)) { // self.orientation = orientation; [self.collectionview.collectionViewLayout invalidateLayout]; DebugLog(@"routed"); } } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; self.toOrientation = toInterfaceOrientation; [self.collectionview.collectionViewLayout invalidateLayout]; } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ - (IBAction)onMatchFullChanged:(id)sender { NSDictionary * item_json = [self.category_data objectForKey:@"items"]; int count =[[item_json valueForKey:@"count"] intValue]; // if(count!=0) // { // self.offset = 0; // [self reload]; // } // } #pragma mark - searchBar delegate; - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { self.keywords=searchBar.text; self.offset = 0; // [self.content_data removeAllObjects]; [self reload]; DebugLog(@"search"); } /* - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { if([searchText isEqualToString:@""] && !self.reset) { DebugLog(@"clear"); self.reset=true; self.keywords=nil; self.offset = 0; [self.content_data removeAllObjects]; [self loadpage]; [self loadpage]; } else self.reset = false; }*/ #pragma mark -- UICollectionViewDataSource -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { if (self.disappear) { // 消除invalidateSize警告,在横屏切出,竖屏切回时 return 0; } // 每个Section的item个数 NSDictionary * item_json = [self.category_data objectForKey:@"items"]; int count =[[item_json valueForKey:@"count"] intValue]; return count; } -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { NSString* value =[DefaultAppearance get_noneappearance_value:@"CategoryViewController" valuename:@"cell_border_color"]; if(value==nil) value=@""; unsigned long color = strtoul([value UTF8String],0,16); if(self.categoryViewType == CATEGORY_VIEWTYPE_SMALL) { static NSString * CellIdentifier = @"CategoryCellNPD"; CategoryCellNPD * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary * item_json =[[self.category_data objectForKey:@"items" ] objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; NSString* description =[item_json valueForKey:@"description"]; NSString* name =[item_json valueForKey:@"fash_name"]; bool wish_exist = [[item_json valueForKey:@"wish_exists"]boolValue]; bool cart_exists = [[item_json valueForKey:@"cart_exists"]boolValue]; bool closeout = [[item_json valueForKey:@"is_closeout"]boolValue]; BOOL more_color = [[item_json valueForKey:@"more_color"] boolValue]; cell.mark_moreColor.hidden = !more_color; if(wish_exist) cell.mark_wish.hidden=false; else cell.mark_wish.hidden=true; if(cart_exists) cell.mark_order.hidden=false; else cell.mark_order.hidden=true; if(closeout) cell.mark_closeout.hidden=false; else cell.mark_closeout.hidden=true; // NSString* old_price =[item_json valueForKey:@"old_price"]; // NSString* price =[item_json valueForKey:@"price"]; bool checked =[[item_json valueForKey:@"checked"] boolValue]; if(!checked) { cell.checkImageView.hidden = true; [cell setBackgroundColor:[UIColor whiteColor]/* UIColorFromRGB(0x996633)*/]; } else { cell.checkImageView.hidden = false; [cell setBackgroundColor: UIColorFromRGB(0x009966)]; } cell.nameLabel.text = description; cell.modelNoLabel.text=name; // cell.cellDescription.text = description; // cell.oldPrice.text = old_price; // cell.Price.text = price; cell.layer.borderColor = UIColorFromRGB(color).CGColor; cell.layer.borderWidth = 0.5; //cell.layer.cornerRadius=15; cell.layer.masksToBounds=true; return cell; } else if(self.categoryViewType == CATEGORY_VIEWTYPE_LARGE) { static NSString * CellIdentifier = @"CategoryCellNPDLarge"; CategoryCellNPD * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary * item_json =[[self.category_data objectForKey:@"items" ] objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; NSString* description =[item_json valueForKey:@"description"]; NSString* name =[item_json valueForKey:@"fash_name"]; bool wish_exist = [[item_json valueForKey:@"wish_exists"]boolValue]; bool cart_exists = [[item_json valueForKey:@"cart_exists"]boolValue]; bool closeout = [[item_json valueForKey:@"is_closeout"]boolValue]; BOOL more_color = [[item_json valueForKey:@"more_color"] boolValue]; cell.mark_moreColor.hidden = !more_color; if(wish_exist) cell.mark_wish.hidden=false; else cell.mark_wish.hidden=true; if(cart_exists) cell.mark_order.hidden=false; else cell.mark_order.hidden=true; if(closeout) cell.mark_closeout.hidden=false; else cell.mark_closeout.hidden=true; // NSString* old_price =[item_json valueForKey:@"old_price"]; // NSString* price =[item_json valueForKey:@"price"]; bool checked =[[item_json valueForKey:@"checked"] boolValue]; if(!checked) { cell.checkImageView.hidden = true; [cell setBackgroundColor:[UIColor whiteColor]/* UIColorFromRGB(0x996633)*/]; } else { cell.checkImageView.hidden = false; [cell setBackgroundColor: UIColorFromRGB(0x009966)]; } cell.nameLabel.text = description; cell.modelNoLabel.text=name; // cell.cellDescription.text = description; // cell.oldPrice.text = old_price; // cell.Price.text = price; cell.layer.borderColor = UIColorFromRGB(color).CGColor; cell.layer.borderWidth = 0.5; //cell.layer.cornerRadius=15; cell.layer.masksToBounds=true; return cell; } else { static NSString * CellIdentifier = @"CategoryCellNPDList"; CategoryCellNPD * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary * item_json =[[self.category_data objectForKey:@"items" ] objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; NSString* description =[item_json valueForKey:@"description"]; NSString* name =[item_json valueForKey:@"fash_name"]; bool wish_exist = [[item_json valueForKey:@"wish_exists"]boolValue]; bool cart_exists = [[item_json valueForKey:@"cart_exists"]boolValue]; bool closeout = [[item_json valueForKey:@"is_closeout"]boolValue]; BOOL more_color = [[item_json valueForKey:@"more_color"] boolValue]; cell.mark_moreColor.hidden = !more_color; if(wish_exist) cell.mark_wish.hidden=false; else cell.mark_wish.hidden=true; if(cart_exists) cell.mark_order.hidden=false; else cell.mark_order.hidden=true; if(closeout) cell.mark_closeout.hidden=false; else cell.mark_closeout.hidden=true; // NSString* old_price =[item_json valueForKey:@"old_price"]; // NSString* price =[item_json valueForKey:@"price"]; bool checked =[[item_json valueForKey:@"checked"] boolValue]; if(!checked) { cell.checkImageView.hidden = true; [cell setBackgroundColor: [UIColor whiteColor]]; } else { cell.checkImageView.hidden = false; [cell setBackgroundColor: UIColorFromRGB(0x009966)]; } cell.nameLabel.text = description; cell.modelNoLabel.text=name; // cell.cellDescription.text = description; // cell.oldPrice.text = old_price; // cell.Price.text = price; cell.layer.borderColor = UIColorFromRGB(color).CGColor; cell.layer.borderWidth = 0.5; //cell.layer.cornerRadius=15; cell.layer.masksToBounds=true; return cell; } } - (void)collectionCell:(CategoryCellNPD *)cell setImageForIndexPath:(NSIndexPath *)indexPath { NSDictionary * item_json =[[self.category_data objectForKey:@"items" ] objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; NSString* img_url =[item_json valueForKey:@"img"]; NSString* file_name=[img_url lastPathComponent]; NSString *loading = @"loading_l"; NSString *notFound = @"notfound_l"; if (self.categoryViewType == CATEGORY_VIEWTYPE_LARGE) { loading = @"loading_l"; notFound = @"notfound_l"; } else if (self.categoryViewType == CATEGORY_VIEWTYPE_SMALL) { loading = @"loading_s"; notFound = @"notfound_s"; } if (![cell.imageName isEqualToString:img_url]) { cell.imageName = img_url; cell.cellImageView.image = [UIImage imageNamed:loading]; NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url]; if(img_data!=nil) { UIImage * img =[UIImage imageWithData:img_data]; cell.cellImageView.image = img; } else { NSLog(@"load image"); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]]; dispatch_async(dispatch_get_main_queue(), ^{ if(downloadimg_data!=nil) { [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url]; UIImage * img =[UIImage imageWithData:downloadimg_data]; cell.cellImageView.image = img; } else cell.cellImageView.image = [UIImage imageNamed:notFound]; }); }); } } } - (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { CategoryCellNPD * son_cell = (CategoryCellNPD *)cell; son_cell.imageName = nil; [self collectionCell:son_cell setImageForIndexPath:indexPath]; } - (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { CategoryCellNPD * son_cell = (CategoryCellNPD *)cell; NSString *loading = @"loading_l"; if (self.categoryViewType == CATEGORY_VIEWTYPE_LARGE) { loading = @"loading_l"; } else if (self.categoryViewType == CATEGORY_VIEWTYPE_SMALL) { loading = @"loading_s"; } son_cell.cellImageView.image = [UIImage imageNamed:loading]; } #pragma mark --UICollectionViewDelegateFlowLayout ////定义每个UICollectionView 的大小 //- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath //{ // return CGSizeMake(96, 100); //} //定义每个UICollectionView 的 margin - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation]; orientation = self.toOrientation; if (UIInterfaceOrientationIsLandscape(orientation)) { // DebugLog(@"横"); // if(self.showDetail) // return CGSizeMake(96, 100); if(self.categoryViewType ==CATEGORY_VIEWTYPE_LARGE) return CGSizeMake(328, 391); else if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return CGSizeMake(1024, 120); return CGSizeMake(193, 269); } else if(UIInterfaceOrientationIsPortrait(orientation)) { // DebugLog(@"竖"); // if(self.showDetail) // return CGSizeMake(96, 100); if(self.categoryViewType ==CATEGORY_VIEWTYPE_LARGE) return CGSizeMake(369, 440); else if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return CGSizeMake(768, 120); return CGSizeMake(180, 251); } DebugLog(@"error , %ld",(long)orientation ); return CGSizeMake(96, 100); } - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return 1; return 15; } -(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { if(self.showDetail) return UIEdgeInsetsMake(10, 5, 10, 5); // if(self.categoryViewType ==CATEGORY_VIEWTYPE_LARGE) // return UIEdgeInsetsMake(10, 10, 10, 10); if(self.categoryViewType ==CATEGORY_VIEWTYPE_LARGE) return UIEdgeInsetsMake(10, 10, 10, 10); else if(self.categoryViewType ==CATEGORY_VIEWTYPE_LIST) return UIEdgeInsetsMake(10, 0, 10, 0); return UIEdgeInsetsMake(10, 10, 10, 10); return UIEdgeInsetsMake(10, 10, 10, 10); } #pragma mark --UICollectionViewDelegate -(void) showDetailat:(NSString*) item_id category_id:(NSString*) category_id name:(NSString *)name index:(long)index { DetailViewController* dvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController" ]; // dvc dvc.OnBack=^(bool add_cart,bool add_wish,bool update_data) { NSMutableDictionary* items =[[self.category_data objectForKey:@"items"] mutableCopy]; NSMutableDictionary* item = [[items objectForKey:[NSString stringWithFormat:@"item_%ld",index]] mutableCopy]; if(add_cart) item[@"cart_exists"]=@"true"; if(add_wish) item[@"wish_exists"]=@"true"; items[[NSString stringWithFormat:@"item_%ld",index]] = item; self.category_data[@"items"]=items; [self.collectionview reloadData]; }; // dvc.use_model_name = true; // dvc.model_name=[transformed stringValue]; dvc.product_id = item_id; dvc.category_id=category_id; dvc.ispush = true; dvc.model_name = name; [dvc reload]; [self.navigationController pushViewController:dvc animated:true]; return; //一下为detail嵌入当前窗口的方式 self.categoryViewType = CATEGORY_VIEWTYPE_SMALL; // [self.collectionview.collectionViewLayout invalidateLayout]; [self.collectionview reloadData]; UIInterfaceOrientation orientation =[UIApplication sharedApplication].statusBarOrientation; int width=175; // int height; if(orientation == UIDeviceOrientationLandscapeLeft ||orientation == UIDeviceOrientationLandscapeRight) { width = 370; // height = 400; } else { UICollectionViewFlowLayout *flowLayout =(UICollectionViewFlowLayout*)[self.collectionview collectionViewLayout]; flowLayout.scrollDirection= UICollectionViewScrollDirectionHorizontal; // [self.collectionview ] set // height = 251; width = 180; } CGRect frame = CGRectMake(0, 48, self.view.bounds.size.width, 271); // CGRect framedetail = CGRectMake(0,271 ,self.view.bounds.size.width,self.view.bounds.size.height-271); [UIView animateWithDuration:0.5 animations:^{ self.collectionview.frame=frame; // self.detailView.frame = framedetail; // self.cagegoryLabel.hidden = true; }]; self.collectionview.autoresizingMask = self.collectionview.autoresizingMask ^ UIViewAutoresizingFlexibleWidth; self.showDetail = true; NSArray* a= self.childViewControllers; for (int i=0;i