// // DetailViewController.m // RedAnt ERP Mobile // // Created by Ray on 7/25/15. // Copyright (c) 2015 United Software Applications, Inc. All rights reserved. // #import "DetailViewController.h" #import "DetailHeaderCell.h" #import "DetailImageCell.h" #import "RANetwork.h" #import "RTLabel.h" #import "DetailKVCell.h" #import "LineView.h" //#import "SelectorViewController.h" #import "RAUtils.h" #import "MainViewController.h" #import "QRCodeGenerator.h" #import "DefaultTableHeaderView.h" #import "DefaultAppearance.h" #import "JKMessageBoxController.h" #import "CartUtils.h" #import "ImageUtils.h" #import "RAPDFViewController.h" #import "ModelDescriptionController.h" #import "TextUtils.h" #import "FileCache.h" #if defined(BUILD_HOMER) || defined(BUILD_GATIT) #import "HomerModelDetailHeaderCell.h" #endif #define DEF_CELL_HEIGHT 44 #define DEF_TABLE_HEIGHT 44 #define LINE_WIDTH 10 #define CELL_MARGIN 0 #define LABEL_MARGIN 10 #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height) #define NavColor ([UIColor colorWithRed:237/255.0 green:20/255.0f blue:91/255.0f alpha:1.0f]) @interface DetailViewController () @property (nonatomic,strong) UIBezierPath *path; @end @implementation DetailViewController { CALayer *_layer; } #ifndef RA_NOTIFICATION -(void) reload_container_getdata:(bool) update_data { [super reload_container_getdata:update_data]; if(update_data) [self reload]; else { [self.detailTable reloadData]; // [self refresh_total]; } } #endif -(void)manually_refresh { UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:300]; if(self.isrefreshing) { [reF endRefreshing]; return; } reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"]; if ([self respondsToSelector:@selector(ReloadData)]) [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1]; // DebugLog(@"refresh!!!!!!!!"); } -(void) ReloadData { UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:300]; [reF endRefreshing]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; [self reload]; } -(void) reload { dispatch_async(dispatch_get_main_queue(), ^{ if(self.isrefreshing) return; #ifdef BUILD_UWAVER self.navigationItem.rightBarButtonItem.enabled = false; #endif self.label_net_err.hidden=true; self.detailTable.hidden = true; self.isrefreshing=true; self.mum.center = self.view.center; self.mum.hidden = false; [self.mum startAnimating]; //self.detailTable.hidden=true; [RANetwork request_modeldetail:self.product_id model_name:self.model_name upc_code:self.upc_code category_id:self.category_id use_name:self.use_model_name use_upc:self.use_upc_code groupName:self.groupName completionHandler:^(NSMutableDictionary *result) { NSMutableDictionary* detail_json=result; [self.mum stopAnimating]; #ifdef BUILD_UWAVER self.navigationItem.rightBarButtonItem.enabled = true; #endif self.groupName = nil; if([[detail_json valueForKey:@"result"] intValue]==2) { self.detail_data = [detail_json mutableCopy]; self.product_id = [NSString stringWithFormat:@"%d",[[detail_json valueForKey:@"product_id"] intValue] ]; NSMutableDictionary* imgsection = [[detail_json objectForKey:@"img_section"] mutableCopy]; // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(/*appDelegate.user_type==USER_ROLE_CUSTOMER*/true) { #ifdef BUILD_CONTRAST self.quantity = [[imgsection valueForKey:@"stockUom"] intValue]; #else self.quantity =[[imgsection valueForKey:@"stockUom"] intValue]; #endif // else // self.quantity =1; } if(self.quantity==0) self.quantity=1; self.step=self.quantity; [self.detailTable reloadData]; // self.detailTable.hidden = false; NSString* model_name = self.detail_data[@"img_section"][@"model_name"]; NSString* img_url = self.detail_data[@"img_section"][@"model_s_img"]; NSMutableDictionary* images=[self.detail_data[@"img_section"][@"images"] mutableCopy]; NSMutableDictionary* videos=[self.detail_data[@"img_section"][@"videos"] mutableCopy]; NSMutableDictionary* contents = [NSMutableDictionary new]; int count = 0; { for(int ic=0;ic<[videos[@"count"] intValue];ic++) { NSString* videocode = videos[[NSString stringWithFormat:@"video_%d",ic]]; // NSString* path=[[NSBundle mainBundle] pathForResource:@"play" ofType:@"jpg"]; // // NSMutableDictionary* item =[@{@"type":@"video",@"is_localfile":@(true),@"l":path,@"s":path} mutableCopy]; // // contents[[NSString stringWithFormat:@"item_%d",count]]=item ; // count++; NSMutableDictionary* item =[@{@"type":@"video",@"code":videocode} mutableCopy]; contents[[NSString stringWithFormat:@"item_%d",count]]=item; count++; } } { for(int ic=0;ic<[images[@"img_count"] intValue];ic++) { NSMutableDictionary* item = [images[[NSString stringWithFormat:@"img_%d",ic]] mutableCopy]; item[@"type"]=@"image"; contents[[NSString stringWithFormat:@"item_%d",count]]=item; count++; } //#ifndef BUILD_HOMER #if !defined(BUILD_HOMER) && !defined(BUILD_GATIT) // homer 要求去掉qrcode 2017/12/20 NSString* qrpath = [ImageUtils generateQRCodeFile:model_name width:350 height:350]; // UIImage* qrimg=[QRCodeGenerator qrImageForString:model_name imageSize:350]; if(qrpath!=nil) { NSMutableDictionary* item =[@{@"type":@"image",@"is_localfile":@(true),@"l":qrpath,@"s":qrpath} mutableCopy]; contents[[NSString stringWithFormat:@"item_%d",count]]=item ; count++; } #endif } contents[@"count"]=@(count); imgsection[@"stack_contents"]=contents; self.detail_data[@"img_section"]=imgsection; // self.detail_data[@"img_section"][@"stack_contents"]=contents; NSMutableDictionary* item = [[NSMutableDictionary alloc]init]; [item setValue:self.product_id forKey:@"product_id"]; [item setValue:self.category_id forKey:@"category"]; [item setValue:model_name forKey:@"fash_name"]; [item setValue:img_url forKey:@"picture_path"]; [CartUtils add_recent_model:item]; NSUInteger ii[2] = {0,0}; [self.detailTable scrollToRowAtIndexPath:[NSIndexPath indexPathWithIndexes:ii length:2] atScrollPosition:UITableViewScrollPositionTop animated:YES]; // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // int count=[appDelegate.recent_model[@"count"] intValue]; // bool bexist = false; // for(int i=0;i)coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; [coordinator animateAlongsideTransition:^(id _Nonnull context) { // what ever you want to prepare } completion:^(id _Nonnull context) { [self.detailTable reloadData]; }]; } #pragma mark - Notification - (void)registNotification { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleUserLoginNotification:) name:User_LoginOK_Notification object:nil]; } - (void)unregistNotification { [[NSNotificationCenter defaultCenter] removeObserver:self name:User_LoginOK_Notification object:nil]; } #pragma mark - Nav Bar - (void)setupNavigationBar { UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"back"] imageWithRenderingMode:UIImageRenderingModeAutomatic] style:UIBarButtonItemStylePlain target:self action:@selector( onBackClick:)]; self.navigationItem.leftBarButtonItem = backButton; #ifdef BUILD_UWAVER AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; if (appDelegate.bLogin) { // UIBarButtonItem *hangTagItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(hanTagBtnClick:)]; UIBarButtonItem *hangTagItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"btn_print_order"] imageWithRenderingMode:UIImageRenderingModeAutomatic] style:UIBarButtonItemStylePlain target:self action:@selector(hanTagBtnClick:)]; hangTagItem.enabled = false; self.navigationItem.rightBarButtonItem = hangTagItem; } #endif } #pragma mark - Action - (void)handleUserLoginNotification:(NSNotification *)notification { [self setupNavigationBar]; } - (void)hanTagBtnClick:(id)sender { DetailViewController *vc = self; NSString *catelog_name = [NSString stringWithFormat:@"%@ Hang Tag",vc.groupName]; // __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Processing" completion:^{ PopWaitAlert* pop = [RAUtils waiting_pop:@"Processing" completion:nil]; [RANetwork request_hangtag:vc.groupName completionHandler:^(NSMutableDictionary *result) { NSMutableDictionary* editor_json =result; // [waitalert dismissViewControllerAnimated:YES completion:^{ [pop hide]; if([[editor_json valueForKey:@"result"] intValue]==2) { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; NSString* url = [editor_json valueForKey:@"pdf_path"]; bool isLocalFile = [[editor_json valueForKey:@"isLocalFile"] boolValue]; RAPDFViewController *ViewController = [[UIStoryboard storyboardWithName:@"wkweb" bundle:nil] instantiateViewControllerWithIdentifier:@"RAPDFViewController"]; ViewController.url = url; ViewController.canSave = false; ViewController.isLocalfile=isLocalFile; ViewController.filename = [NSString stringWithFormat:@"%@.pdf",[TextUtils legalFilename:catelog_name]]; NSString* company= [appDelegate.customerInfo valueForKey:@"customer_name"]; if(company==nil) company=@""; NSString* customer_email= [appDelegate.customerInfo valueForKey:@"customer_email"]; NSMutableArray* send_to = [[NSMutableArray alloc]init]; if(customer_email.length>0) { send_to=[[customer_email componentsSeparatedByString:NSLocalizedString(@";", nil)] mutableCopy]; } ViewController.mail_to = send_to; NSString* subject; subject =catelog_name; ViewController.mail_subject = subject; ViewController.hidenavi = false; [vc.navigationController pushViewController:ViewController animated:YES]; } else { [RAUtils message_box:@"Create Hang Tag" message:[editor_json valueForKey:@"err_msg"] completion:nil]; } // }]; }]; // }]; return; } #pragma mark - Selector delegate -(void) selected:(NSString*) detail_id category:(NSString*) category { self.product_id = detail_id; self.use_model_name = false; [self reload]; DebugLog(@"color selected"); } #pragma mark - Header cell delegate -(void) SelectorClicked:(UIView*) trigger { // int selcount = [[self.selector valueForKey:@"count"] intValue]; int selector_count = [[self.selector valueForKey:@"count"] intValue]; int current_sel = -1; for(int i=0;i 4) { height = 70 * 4.5; } self.dropDown =[[NIDropDown alloc] showDropDown:self.detailTable based:(id)trigger height:height data:self.selector direction:@"down" current_sel:current_sel]; //Capturing strongly warring; __block DetailViewController *brself= self; self.dropDown.dropDownTouchOutsideBlk = ^{ [brself.dropDown hideDropDown:(id)trigger]; brself.dropDown= nil; }; self.dropDown.selectChanged =^(long index){ NSDictionary* item = [brself.selector objectForKey:[NSString stringWithFormat:@"item_%ld",index]]; NSDictionary* params = [item objectForKey:@"params"]; NSString* detail_id=[[[params objectForKey:@"param_0"] valueForKey:@"val" ] stringValue]; brself.product_id = detail_id; brself.use_model_name = false; [brself reload]; // DebugLog(@"color selected"); brself.dropDown = nil; }; //[[NIDropDown alloc]showDropDown:(id)trigger :&f :arr :arrImage :@"down"]; // self.dropDown.delegate = self; } else { [self.dropDown hideDropDown:(id)trigger]; self.dropDown= nil; // [self rel]; } return; } -(void) stepClicked:(int) value { self.quantity = value; } #pragma mark - Topic cell delegate -(void) TopicItemClicked:(NSString*) product_id category:(NSString*) category { // self.model_name = value; self.product_id = product_id; self.category_id=category; [self reload]; DebugLog(@"color selected"); } #pragma mark - Table view data source //- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section //{ // return 0; //} //- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section //{ // return 0; //} //- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section //{ // UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)]; // return myView; // //} //- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section //{ // UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)]; //// myView.backgroundColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7]; //// UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 90, 22)]; //// titleLabel.textColor=[UIColor whiteColor]; //// titleLabel.backgroundColor = [UIColor clearColor]; //// if(section==0) //// titleLabel.text=NSLocalizedString(@"display_items", nil); //// else //// titleLabel.text=NSLocalizedString(@"hide_items", nil); //// [titleLabel sizeToFit]; //// [myView addSubview:titleLabel]; //// // return myView; //} - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { if(section==0) return nil; NSDictionary* related_json = [self.detail_data objectForKey:@"related_model"]; if(related_json==nil) { NSDictionary* section_json = [self.detail_data objectForKey:[NSString stringWithFormat:@"detail_%ld",(long)(section-1)]]; return [section_json valueForKey:@"title"] ; } else { if(section==1) return @"related model"; else { NSDictionary* section_json = [self.detail_data objectForKey:[NSString stringWithFormat:@"detail_%ld",(long)section-2]]; return [section_json valueForKey:@"title"] ; } } } //- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section //{ // return 33; //} -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { NSString* value =[DefaultAppearance get_noneappearance_value:@"DefaultTableHeaderView" valuename:@"title_text_color"]; if(value==nil) value=@""; unsigned long color = strtoul([value UTF8String],0,16); NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section]; if (sectionTitle == nil) { return nil; } DefaultTableHeaderView* myView = [[DefaultTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)]; // myView.backgroundColor = UIColorFromRGB(0x996633); myView.layer.shadowPath =[UIBezierPath bezierPathWithRect:myView.bounds].CGPath; myView.layer.shadowColor = [UIColor blackColor].CGColor; myView.layer.shadowOffset = CGSizeMake(0, 0); myView.layer.shadowOpacity = 0.5; myView.layer.shadowRadius = 2.0; UILabel *titlelabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 5.5, 90, 22)]; titlelabel.textColor=UIColorFromRGB(color); // titlelabel.backgroundColor = [UIColor clearColor]; titlelabel.text=sectionTitle; [titlelabel sizeToFit]; NSDictionary* section_json = [self.detail_data objectForKey:[NSString stringWithFormat:@"detail_%ld",(long)(section-1)]]; bool refresh= [[section_json valueForKey:@"partial_refresh"] boolValue] ; if(refresh) { NSString* btntitle=@"Refresh" ; // NSString* value =[DefaultAppearance get_noneappearance_value:@"DetailTableHeaderView" valuename:@"refresh_button_color"]; // // if(value==nil) // value=@""; // unsigned long color = strtoul([value UTF8String],0,16); UIButton * btn =[[UIButton alloc] initWithFrame:CGRectMake(tableView.bounds.size.width-100-15, 0, 100, 33)]; // [btn setTitleColor:UIColorFromRGB(color) forState:UIControlStateNormal]; btn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentRight; btn.tag=section; [btn addTarget:self action:@selector(RefreshSection:) forControlEvents:UIControlEventTouchUpInside]; [btn setTitle:btntitle forState:UIControlStateNormal]; [myView addSubview:btn]; } [myView addSubview:titlelabel]; return myView; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { int section_count =[[self.detail_data valueForKey:@"detail_section_count"] intValue]; if(section_count==0) return section_count; NSDictionary* related_json = [self.detail_data objectForKey:@"related_model"]; if(related_json==nil) return section_count+1; else return section_count+2; } //- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath //{ // DebugLog(@"canMoveRowAtIndexPath"); // // if([tableView numberOfRowsInSection:indexPath.section]>1) // return true; // else // return false; //} //- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath //{ // NSMutableArray * from; // NSMutableArray * to ; // if(fromIndexPath.section==0) // from = self.displayfields; // else // from = self.hidefields; // if(toIndexPath.section==0) // to = self.displayfields; // else // to = self.hidefields; // id content=from[fromIndexPath.row]; // [from removeObjectAtIndex:fromIndexPath.row]; // [to insertObject:content atIndex:toIndexPath.row]; // // [tableView reloadData]; // //} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if(section==0) return 1; NSDictionary* related_json = [self.detail_data objectForKey:@"related_model"]; if(related_json==nil) { NSDictionary* section_json = [self.detail_data objectForKey:[NSString stringWithFormat:@"detail_%ld",(long)section-1]]; NSString* type=[section_json valueForKey:@"type"] ; if([type isEqualToString:@"content"]) return 1; return [[section_json valueForKey:@"count"] intValue]; } else { if(section==1) return 1; else { NSDictionary* section_json = [self.detail_data objectForKey:[NSString stringWithFormat:@"detail_%ld",(long)section-2]]; NSString* type=[section_json valueForKey:@"type"] ; if([type isEqualToString:@"content"]) return 1; return [[section_json valueForKey:@"count"] intValue]; } } } //- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath //{ // return UITableViewCellEditingStyleNone; //} //- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath //{ // //如果两次点击的时间间隔小于1秒,则断定为双击事件 // // if(tableView.editing==false) // return; // // // if([tableView numberOfRowsInSection:indexPath.section]<=1) // return; // // int between = 1; // NSUInteger curr = [[NSDate date] timeIntervalSince1970]; // // if(indexPath.row==self.lasttap.row&&indexPath.section==self.lasttap.section) // { // if (curr-self.taptime<1) { // DebugLog(@"double click!"); // self.lasttap =nil; // // NSMutableArray * from; // NSMutableArray * to ; // int section; // if(indexPath.section==0) // { // from = self.displayfields; // to = self.hidefields; // section = 1; // } // else // { // // from = self.hidefields; // to = self.displayfields; // section = 0; // } // NSIndexPath * toIndexPath = [NSIndexPath indexPathForRow:0 inSection:section]; // // NSIndexPath * headerIndexPath = [NSIndexPath indexPathForRow:0 inSection:indexPath.section]; // // NSIndexPath * headerIndexPath1 = toIndexPath; // // id content=from[indexPath.row]; // [tableView beginUpdates]; // [from removeObjectAtIndex:indexPath.row]; // [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; // // [to insertObject:content atIndex:0]; // [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:toIndexPath] withRowAnimation:UITableViewRowAnimationFade]; // [tableView endUpdates]; // // // [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:headerIndexPath] withRowAnimation:UITableViewRowAnimationFade]; // // [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:headerIndexPath1] withRowAnimation:UITableViewRowAnimationFade]; // [tableView reloadData]; // // // } // self.taptime = curr; // // // } // else // { // self.taptime = curr; // self.lasttap = indexPath; // } //} - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if(section ==0) return 0; else return 33; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; { if(indexPath.section ==0) { #if defined(BUILD_HOMER) || defined(BUILD_GATIT) CGFloat height = CGRectGetHeight(self.view.bounds); if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft || self.interfaceOrientation == UIInterfaceOrientationLandscapeRight ) { return height; } #endif return 550; } // NSDictionary* nsdic = self.detail_data; NSDictionary* related_json = [self.detail_data objectForKey:@"related_model"]; if(related_json==nil) { NSDictionary* section_json = [self.detail_data objectForKey:[NSString stringWithFormat:@"detail_%ld",(long)indexPath.section-1]]; NSDictionary* item_json =[section_json objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row ]]; NSString* type=[section_json valueForKey:@"type"] ; if([type isEqualToString:@"kv"]) { float width = tableView.frame.size.width; width-=CELL_MARGIN*2; // CGSize constraintkey = CGSizeMake(width*0.4-2*LABEL_MARGIN, 20000.0f);//key label width is 40% cell width; CGSize constraintval = CGSizeMake(width*0.6-2*LABEL_MARGIN, 20000.0f);//val label width is 60% cell width; // NSDictionary* item = [self.content get_item_seg:indexPath.section row:indexPath.row]; NSString* key =[item_json valueForKey:@"key"] ; // [cell.keyLabel sizeToFit]; NSString* val=[item_json valueForKey:@"val"] ; if([val isEqual:[NSNull null]]) val=@""; if(val==nil) val=@""; if([val isEqualToString:@"null"]) val=@""; CGRect frame; frame.size = constraintval; frame.origin.x=0; frame.origin.y=0; RTLabel* rtlabel = [[RTLabel alloc] initWithFrame:frame]; [rtlabel setLineBreakMode: RTTextLineBreakModeWordWrapping]; // rtlabel.lineSpacing = 20.0; [rtlabel setText: val]; rtlabel.font = [UIFont systemFontOfSize:17.0]; CGSize sizeval=rtlabel.optimumSize; rtlabel.text = key; CGSize sizekey =rtlabel.optimumSize; // CGSize sizekey = [key sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping]; // CGSize sizekey = [RAUtils sizeWithFont:key font:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping]; // CGSize sizeval = [val sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintval lineBreakMode:NSLineBreakByWordWrapping]; float height = MAX(sizekey.height,sizeval.height); height = MAX(height+LINE_WIDTH, DEF_CELL_HEIGHT); return height; } else if([type isEqualToString:@"img"]) { int img_count = [[item_json valueForKey:@"count"] intValue]; double ret = 0; for(int j=0;j 50) { x -= 20; } cell.photoStack.frame = CGRectMake(x, y, a, a); cell.pageControl.frame = CGRectMake((space_w - 319) * 0.5, h - 50, 319, 37); } else { cell.photoStack.frame = CGRectMake(35, 107, 349, 348); cell.pageControl.frame = CGRectMake(50, 466, 319, 37); } #else NSString *CellIdentifier = @"DetailHeaderCell"; DetailHeaderCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; cell.btn_hangtag.hidden = YES; #endif NSMutableDictionary* section_json = [[self.detail_data objectForKey:@"img_section"] mutableCopy]; // Homer添加的View cell.hmlg_stock_lb.hidden = YES; cell.hmlg_stock_count_lb.hidden = YES; cell.on_sale_lb.hidden = YES; if (!RASingleton.sharedInstance.user) { // 没有登录时隐藏add to portfolio,使add to cart与add to wishlist对齐 cell.btnaddPortfolio.hidden = YES; cell.btnNotifyMe.hidden = YES; #if defined(BUILD_HOMER) || defined(BUILD_GATIT) // cell.hmlg_stock_lb.hidden = NO; // cell.hmlg_stock_count_lb.hidden = NO; BOOL is_special_model = [[section_json objectForKey:@"is_special_model"] boolValue]; id hmlg_stock = [section_json objectForKey:@"hmlg_avalability"]; if (hmlg_stock == nil) { hmlg_stock = @""; } cell.hmlg_stock_count_lb.text = [NSString stringWithFormat:@"%@",hmlg_stock]; cell.on_sale_lb.hidden = !is_special_model; #endif } else { #if defined(BUILD_NPD) || defined(BUILD_USAI) || defined(BUILD_UWAVER)|| defined (BUILD_CONTRAST) // NSString *qtyStr = [section_json valueForKey:@"Availability"]; __weak typeof(self) weakself = self; cell.notifyMeBlock = ^{ // __block UIAlertController *waitting_alert = [RAUtils waiting_alert:self title:@"Sending Email" completion:^{ PopWaitAlert* pop = [RAUtils waiting_pop:@"Sending Email" completion:nil]; [RANetwork request_notifymodel:self.product_id emailAddr:nil withScreen:ScreenCodeModelInfo completionHandler:^(NSMutableDictionary *result) { NSMutableDictionary *dic =result; // [waitting_alert dismissViewControllerAnimated:YES completion:^{ [pop hide]; int result_code = [[dic valueForKey:@"result"] intValue]; if (result_code != RESULT_TRUE && result_code != RESULT_NO_EMAIL_ADDRESS) { NSString *msg = [NSString stringWithFormat:@"The email send failed"]; if ([dic valueForKey:@"err_msg"]) { msg = [dic valueForKey:@"err_msg"]; } UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:msg preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [errorAlertVC addAction:action]; [weakself presentViewController:errorAlertVC animated:YES completion:nil]; } else if (result_code == RESULT_TRUE){ [RAUtils message_box:@"Message" message:@"Notification is sent to default email address." completion:nil]; } else if (result_code == RESULT_NO_EMAIL_ADDRESS) { [self showEmailAddrBox]; } // }]; // [waitting_alert dismissWithClickedButtonIndex:0 animated:NO]; }]; // }]; }; if (appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { cell.btnaddPortfolio.hidden = YES; if (!notifyMe_switch) { cell.btnNotifyMe.hidden = YES; } else { cell.btnNotifyMe.hidden = NO; if (!appDelegate.order_code) { // 未打开订单状态 if ([self isOutofStock]) { if (!appDelegate.can_create_backorder) { cell.btnaddCart.enabled = NO; } cell.btnNotifyMe.enabled = YES; } else { cell.btnaddCart.enabled = YES; cell.btnNotifyMe.enabled = NO; } } else { // 打开订单状态 if (![RASingleton sharedInstance].currentOrderIsMerged) { // Shop Order cell.btnaddCart.enabled = YES; // 默认未缺货 cell.btnNotifyMe.enabled = NO; if ([self isOutofStock]) { // 缺货 cell.btnNotifyMe.enabled = YES; } } else { // Purchase Order if ([self isOutofStock]) { // 缺货 if (!appDelegate.can_create_backorder) { cell.btnaddCart.enabled = NO; } cell.btnNotifyMe.enabled = YES; } else { // 未缺货 cell.btnNotifyMe.enabled = NO; cell.btnaddCart.enabled = YES; } } } } } else { // employee // online cell.btnaddPortfolio.hidden = NO; cell.btnNotifyMe.hidden = NO; if ([self isOutofStock]) { // 缺货 if (!appDelegate.can_create_backorder) { cell.btnaddCart.enabled = NO; } cell.btnNotifyMe.enabled = YES; } else { // 未缺货 cell.btnNotifyMe.enabled = NO; cell.btnaddCart.enabled = YES; } // offline #ifdef OFFLINE_MODE if (appDelegate.offline_mode) { cell.btnNotifyMe.hidden = YES; } #endif } #endif #if defined(BUILD_HOMER) || defined(BUILD_GATIT) // cell.hmlg_stock_lb.hidden = NO; // cell.hmlg_stock_count_lb.hidden = NO; id hmlg_stock = [section_json objectForKey:@"hmlg_avalability"]; if (hmlg_stock == nil) { hmlg_stock = @""; } cell.hmlg_stock_count_lb.text = [NSString stringWithFormat:@"%@",hmlg_stock]; cell.on_sale_lb.hidden = !is_special_model; NSString *qtyStr = [section_json valueForKey:@"Availability"]; __weak typeof(self) weakself = self; cell.notifyMeBlock = ^{ UIAlertView *waitting_alert = [RAUtils waiting_alert:@"Sending Email" title:@"Waiting"]; [RANetwork request_notifymodel:self.product_id emailAddr:nil withScreen:ScreenCodeModelInfo completionHandler:^(NSMutableDictionary *result) { NSMutableDictionary *dic =result; [waitting_alert dismissWithClickedButtonIndex:0 animated:NO]; NSInteger result = [[dic valueForKey:@"result"] integerValue]; if (result != RESULT_TRUE && result != RESULT_NO_EMAIL_ADDRESS) { NSString *msg = [NSString stringWithFormat:@"The email send failed"]; if ([dic valueForKey:@"err_msg"]) { msg = [dic valueForKey:@"err_msg"]; } UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:msg preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [errorAlertVC addAction:action]; [weakself presentViewController:errorAlertVC animated:YES completion:nil]; } else if (result == RESULT_TRUE){ [RAUtils message_box:@"Message" message:@"Notification is sent to default email address." completion:nil]; } else if (result == RESULT_NO_EMAIL_ADDRESS) { [self showEmailAddrBox]; } }]; }; if (appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { cell.btnaddPortfolio.hidden = YES; if (!notifyMe_switch) { cell.btnNotifyMe.hidden = YES; } else { cell.btnNotifyMe.hidden = NO; if (!appDelegate.order_code) { // 未打开订单状态 if ([self isOutofStock]) { if (!appDelegate.can_create_backorder) { cell.btnaddCart.enabled = NO; } cell.btnNotifyMe.enabled = YES; } else { cell.btnaddCart.enabled = YES; cell.btnNotifyMe.enabled = NO; } } else { // 打开订单状态 if (![Singleton sharedInstance].currentOrderIsMerged) { // Shop Order cell.btnaddCart.enabled = YES; // 默认未缺货 cell.btnNotifyMe.enabled = NO; if ([self isOutofStock]) { // 缺货 cell.btnNotifyMe.enabled = YES; } } else { // Purchase Order if ([self isOutofStock]) { // 缺货 if (!appDelegate.can_create_backorder) { cell.btnaddCart.enabled = NO; } cell.btnNotifyMe.enabled = YES; } else { // 未缺货 cell.btnNotifyMe.enabled = NO; cell.btnaddCart.enabled = YES; } } } } } else { // employee // online cell.btnaddPortfolio.hidden = NO; cell.btnNotifyMe.hidden = NO; if ([self isOutofStock]) { // 缺货 if (!appDelegate.can_create_backorder) { cell.btnaddCart.enabled = NO; } cell.btnNotifyMe.enabled = YES; } else { // 未缺货 cell.btnNotifyMe.enabled = NO; cell.btnaddCart.enabled = YES; } // offline #ifdef OFFLINE_MODE if (appDelegate.offline_mode) { cell.btnNotifyMe.hidden = YES; } #endif } #endif #ifdef BUILD_HMLG cell.btnaddPortfolio.hidden = NO; cell.btnNotifyMe.hidden = YES; #endif } // self.anchor_button.frame=cell.selector_Button.frame; cell.celldelegate=self; cell.quantity_text.text = [NSString stringWithFormat:@"%d",self.quantity]; cell.step = self.step; cell.quantity = self.quantity; // cell.stepper.stepValue = self.step; // cell.stepper.value = self.quantity; NSString* price = [section_json valueForKey:@"price"]; // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.contact_id ==nil) { // appDelegate.bLogin = false; // cell.btnaddCart.enabled = false; } else { if ([price isEqualToString:@"No Price."]) { // cell.btnaddCart.enabled = false; } else { // cell.btnaddCart.enabled = true; } } int cqty = [[section_json valueForKey:@"Model QTY in cart"] intValue]; cell.cqty = cqty; cell.set_cqty=^(int cqty) { [section_json setValue:[NSString stringWithFormat:@"%d",cqty] forKey:@"Model QTY in cart"]; [self.detail_data setObject:section_json forKey:@"img_section"]; [self.detailTable reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; }; cell.set_update_data=^(bool bupdate) { //self.update_data = bupdate; #ifdef RA_NOTIFICATION if(bupdate) [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; else [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_REFRESH_UI]; #else if(bupdate) [((MainViewController*)appDelegate.main_vc) reloadCategory:true immediately:false]; else [((MainViewController*)appDelegate.main_vc) reloadCategory:false immediately:false]; #endif }; if(cqty>0) { cell.cqyt_label.hidden=false; cell.cqyt_label.text=[NSString stringWithFormat:@"Model QTY in Cart:%d",cqty]; } else { cell.cqyt_label.hidden=true; cell.cqyt_label.text=nil; } cell.descriptionRTLabel.text =[NSString stringWithFormat:@"%@\n\n",[section_json valueForKey:@"model_descrition"]]; // cell.descriptionLabel.text =[NSString stringWithFormat:@"%@\n\n",[section_json valueForKey:@"model_descrition"]]; cell.model_label.text =[section_json valueForKey:@"model_name"]; // UIImage* qrimg=[QRCodeGenerator qrImageForString:[section_json valueForKey:@"model_name"] imageSize:80]; // cell.qrcode_imageview.image = qrimg; if(appDelegate.bLogin==true) { if(appDelegate.can_see_price&&appDelegate.price_hidden==false) { } else { price=nil; } } #if defined(BUILD_HOMER) || defined(BUILD_GATIT) NSString *old_price = [section_json objectForKey:@"old_price"]; if (RASingleton.sharedInstance.user && old_price != nil && old_price.length > 0) { cell.priceLabel.text = nil; NSString *new_price_str = [NSString stringWithFormat:@"%@ %@",price,old_price]; NSRange range = [new_price_str rangeOfString:@"$" options:NSBackwardsSearch]; range = NSMakeRange(range.location,new_price_str.length - range.location); NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:new_price_str]; [attrStr addAttributes:@{ NSStrikethroughStyleAttributeName : [NSNumber numberWithInt:NSUnderlineStyleSingle] } range:range]; cell.priceLabel.attributedText = attrStr; } else { cell.priceLabel.attributedText = nil; cell.priceLabel.text =price; } #else cell.priceLabel.text =price; #endif // cell.shipLabel.text = [section_json valueForKey:@"ship"]; cell.count_Label.text =[section_json valueForKey:@"Availability"] ; NSString* eta =[section_json valueForKey:@"ETA"] ; if(eta.length>0) { cell.eta_label.hidden = false; cell.etaval_label.text = eta; cell.etaval_label.hidden = false; cell.incoming_stock_label.hidden=false; cell.incomingcount_Label.text =[section_json valueForKey:@"incoming_stock"] ; cell.incomingcount_Label.hidden = false; } else { cell.eta_label.hidden = true; cell.etaval_label.text = nil; cell.etaval_label.hidden = true; cell.incoming_stock_label.hidden = true; cell.incomingcount_Label.text = nil; cell.incomingcount_Label.hidden = true; } self.selector = [section_json objectForKey:@"selector"]; if(self.selector!=nil) { [cell Hide_selector:false]; cell.selector_nameLabel.text =[self.selector valueForKey:@"name"]; int selector_count = [[self.selector valueForKey:@"count"] intValue]; cell.selector_imageView.image = [UIImage imageNamed:@"loading_s"]; for(int i=0;i0) // [urls addObject:img_url_l]; NSString* file_name=[img_url lastPathComponent]; NSData* img_data=nil; if([type isEqualToString:@"video"]) { img_data = UIImagePNGRepresentation([UIImage imageNamed:@"play"]); } else { if([item_json[@"is_localfile"] boolValue]) img_data = [NSData dataWithContentsOfFile:img_url]; else img_data = [FileCache load_cached_img:file_name loadFrom:img_url]; } if(img_data!=nil) { dispatch_async(dispatch_get_main_queue(), ^{ UIImage * img =[UIImage imageWithData:img_data]; [cell AddPhoto:img]; // if(i==count-1) // { // UIImage* qrimg=[QRCodeGenerator qrImageForString:[section_json valueForKey:@"model_name"] imageSize:350]; // if(qrimg!=nil) // [cell AddPhoto:qrimg]; // } // if(i==0) // cell.imageView.image = img; }); } else { NSData* downloadimg_data = nil; // BOOL offline = NO; //#ifdef OFFLINE_MODE // offline = appDelegate.offline_mode; //#endif // if (!offline) { downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]]; // } dispatch_async(dispatch_get_main_queue(), ^{ if(downloadimg_data!=nil) { [FileCache cache_img:downloadimg_data filename:file_name saveTo:img_url]; UIImage * img =[UIImage imageWithData:downloadimg_data]; [cell AddPhoto:img]; // if(i==count-1) // { // UIImage* qrimg=[QRCodeGenerator qrImageForString:[section_json valueForKey:@"model_name"] imageSize:350]; // if(qrimg!=nil) // [cell AddPhoto:qrimg]; // } // if(i==0) // cell.imageView.image = img; } else { UIImage * img =[UIImage imageNamed:@"notfound_l"]; [cell AddPhoto:img]; // if(i==count-1) // { // UIImage* qrimg=[QRCodeGenerator qrImageForString:[section_json valueForKey:@"model_name"] imageSize:350]; // if(qrimg!=nil) // [cell AddPhoto:qrimg]; // } // if(i==0) // cell.imageView.image = img; } }); } } } }); // cell.backgroundColor = [UIColor whiteColor]; __weak typeof(self) weakself = self; cell.shopCartBlock = ^(UIImageView *imageView){ self.add_cart=true; CGRect rect = [tableView rectForRowAtIndexPath:indexPath]; rect.origin.y = rect.origin.y - [self.detailTable contentOffset].y; CGRect headRect = imageView.frame; headRect.origin.y = rect.origin.y+headRect.origin.y; [self startAnimationWithRect:headRect ImageView:imageView]; [self.navigationController popToRootViewControllerAnimated:false]; // [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false]; [((MainViewController*)appDelegate.main_vc) switchToCart]; }; cell.WatchlistBlock = ^(UIImageView *imageView){ self.add_wish=true; CGRect rect = [tableView rectForRowAtIndexPath:indexPath]; rect.origin.y = rect.origin.y - [self.detailTable contentOffset].y; CGRect headRect = imageView.frame; headRect.origin.y = rect.origin.y+headRect.origin.y; [self startAnimationWithRect:headRect ImageView:imageView]; }; cell.PortfolioBlock = ^(UIImageView *imageView){ self.add_portfolio=true; CGRect rect = [tableView rectForRowAtIndexPath:indexPath]; rect.origin.y = rect.origin.y - [self.detailTable contentOffset].y; CGRect headRect = imageView.frame; headRect.origin.y = rect.origin.y+headRect.origin.y; [self startAnimationWithRect:headRect ImageView:imageView]; #ifdef RA_NOTIFICATION [ActiveViewController Notify:@"PortfolioViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; #else AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [((MainViewController*)appDelegate.main_vc) reloadPortfolio:true immediately:false]; #endif }; NSString *introduce = [section_json objectForKey:@"assembly_pdf_path"]; if (introduce == nil || introduce.length == 0) { cell.introduceBtn.hidden = YES; } else { cell.introduceBtn.hidden = NO; } cell.introduceBlock = ^(UIButton *sender) { [weakself showIntroducePDF:introduce]; }; NSString *desc = [section_json objectForKey:@"product_content_writing"]; if (!desc.length) { cell.descriptionBtn.hidden = YES; } else { cell.descriptionBtn.hidden = NO; NSDictionary *attrs = @{ NSFontAttributeName : [UIFont systemFontOfSize:18.0f], NSUnderlineStyleAttributeName : [NSNumber numberWithInteger:NSUnderlineStyleSingle] }; NSAttributedString *attrTitle = [[NSAttributedString alloc] initWithString:@"Read More" attributes:attrs]; [cell.descriptionBtn setAttributedTitle:attrTitle forState:UIControlStateNormal]; } cell.descriptionBlock = ^(UIButton *sender) { [weakself showModelDescription:desc]; }; #if defined(BUILD_HOMER) || defined(BUILD_GATIT) [cell generate_information]; cell.incoming_stock_label.hidden = YES; cell.count_Label.hidden = YES; cell.hmlg_stock_lb.hidden = YES; cell.hmlg_stock_count_lb.hidden = YES; cell.incomingcount_Label.hidden = YES; cell.eta_label.hidden = YES; cell.etaval_label.hidden = YES; cell.cqyt_label.hidden = YES; #endif return cell; } // NSDictionary* related_json = [self.detail_data objectForKey:@"related_model"]; // if(related_json==nil) else { NSDictionary* section_json = [self.detail_data objectForKey:[NSString stringWithFormat:@"detail_%ld",(long)indexPath.section-1]]; NSDictionary* item_json =[section_json objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row ]]; NSString *CellIdentifier = @"DetailInfoCell"; NSString* type=[section_json valueForKey:@"type"] ; if([type isEqualToString:@"kv"]) { float width = tableView.frame.size.width; width-=CELL_MARGIN*2; CGSize constraintkey = CGSizeMake(width*0.4-2*LABEL_MARGIN, 20000.0f);//key label width is 40% cell width; CGSize constraintval = CGSizeMake(width*0.6-2*LABEL_MARGIN, 20000.0f);//val label width is 60% cell width; // NSDictionary* item = [self.content get_item_seg:indexPath.section row:indexPath.row]; NSString* key =[item_json valueForKey:@"key"] ; NSString* val=[item_json valueForKey:@"val"] ; NSString* type=[item_json valueForKey:@"type"] ; if([type isEqualToString:@"price"]) { if(appDelegate.can_see_price&&appDelegate.price_hidden==false) { } else { val=nil; } } if([val isEqual:[NSNull null]]) val=@""; if(val==nil) val=@""; if([val isEqualToString:@"null"]) val=@""; CGRect frame; frame.size = constraintval; frame.origin.x=0; frame.origin.y=0; RTLabel* rtlabel = [[RTLabel alloc] initWithFrame:frame]; [rtlabel setLineBreakMode: RTTextLineBreakModeWordWrapping]; rtlabel.font=[UIFont systemFontOfSize:17.0]; // rtlabel.lineSpacing = 20.0; [rtlabel setText: val]; CGSize sizeval=rtlabel.optimumSize; // CGSize sizekey = [key sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping]; rtlabel.text = key; CGSize sizekey =rtlabel.optimumSize; // CGSize sizekey = [RAUtils sizeWithFont:key font:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping]; float height = MAX(sizekey.height,sizeval.height); height = MAX(height, DEF_CELL_HEIGHT-LINE_WIDTH); sizekey.height = height; sizekey.width = constraintkey.width; // sizeval.height = height; sizeval.width =constraintval.width; // NSString *CellIdentifier = @"detail_item_kv"; DetailKVCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; if(cell==nil) DebugLog(@"cell is nil........................."); CGRect framekey = cell.keyLabel.frame; framekey.origin.x=CELL_MARGIN+LABEL_MARGIN; framekey.origin.y=LINE_WIDTH/2; framekey.size = sizekey; cell.keyLabel.frame = framekey; cell.keyLabel.text=key; cell.keyLabel.font = [UIFont systemFontOfSize:17.0]; CGRect frameval = cell.valLabel.frame; frameval.origin.x=constraintkey.width+CELL_MARGIN+3*LABEL_MARGIN; //2 margin for key 1 margin for value self frameval.origin.y=0; frameval.size = sizeval; cell.valLabel.frame = frameval; // [cell.valLabel setTextAlignment:RTTextAlignmentCenter]; cell.valLabel.text= val; cell.valLabel.font = [UIFont systemFontOfSize:17.0]; CGPoint rcenter; rcenter.x = width * 0.4+width * 0.6/2; rcenter.y = (height+LINE_WIDTH) /2; cell.valLabel.center=rcenter; // cell.valLabel.backgroundColor =[UIColor redColor]; // cell.contentView.superview.backgroundColor = [UIColor clearColor]; // cell.backgroundColor = [UIColor whiteColor]; UIView * lineview = [[LineView alloc] initWithFrame:cell.contentView.frame]; lineview.userInteractionEnabled = NO;// 不设为NO会屏蔽cell的点击事件 lineview.backgroundColor = [UIColor clearColor];// 设为透明从而使得cell.backgroundColor有效. lineview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [cell.contentView addSubview:lineview];// cell.contentView是个readonly属性,所以别想着替换contentView了. cell.backgroundColor = [UIColor whiteColor]; return cell; } else if ([type isEqualToString:@"img"]) { DetailImageCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DetailImageCell" forIndexPath:indexPath]; int img_count = [[item_json valueForKey:@"count"] intValue]; double posy = 0; for(int j=0;j0) { send_to=[[customer_email componentsSeparatedByString:NSLocalizedString(@";", nil)] mutableCopy]; } ViewController.mail_to = send_to; ViewController.filename = [NSString stringWithFormat:@"%@.pdf",name]; ViewController.mail_subject = subject; ViewController.hidenavi = false; // UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:ViewController]; // nav.modalPresentationStyle = UIModalPresentationFormSheet;// 只在iPad起作用 // CGSize size = [UIScreen mainScreen].bounds.size; // nav.preferredContentSize = CGSizeMake(size.width * 0.8, size.height * 0.8); [self.navigationController pushViewController:ViewController animated:YES]; } - (void)showModelDescription:(NSString *)desc { ModelDescriptionController *vc = [[UIStoryboard storyboardWithName:@"OLM" bundle:nil] instantiateViewControllerWithIdentifier:@"ModelDescriptionController"]; vc.model_desc = desc; vc.title = [NSString stringWithFormat:@"%@ Description",self.model_name]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc]; nav.modalPresentationStyle = UIModalPresentationFormSheet;// 只在iPad起作用 nav.preferredContentSize = CGSizeMake(400, 380);// 只有在 UIModalPresentationFormSheet 的时候起作用 [self presentViewController:nav animated:YES completion:nil]; } - (void)reRefreshView { [self.detailTable reloadData]; } #pragma mark - RA_NOTIFICAITON -(void) refresh_ui { [self.detailTable reloadData]; } -(void) reload_data { [self reload]; } -(void) refresh_price { [self refresh_ui]; } @end