实际上我需要为我项目中的所有交易制作pdf文件。所以我创建了包含.iib的PDFViewController类,其中包含uiView,uitableView等。
我没有将此课程告诉用户,我正在拍摄此类视图的屏幕截图,以便为所有交易制作pdf。
我的问题是我可以拍摄屏幕截图和表格,但我在表格中有很多行,所以我需要滚动它才能拍摄仅用于tableview的屏幕截图,但它不能滚动。
请参阅以下代码,我们将非常感谢您的帮助。感谢
@implementation PDFViewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier=@"PDFCustomCell";
PDFViewCustomCell *cell=(PDFViewCustomCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil)
{
NSArray *nib=[[NSBundle mainBundle]loadNibNamed:@"PDFViewCustomCell" owner:self options:nil];
cell=[nib objectAtIndex:0];
nib=nil;
}
//@autoreleasepool {
PDFPrint *pdfObj=[self.arrProducts objectAtIndex:indexPath.row];
cell.unitPrice.text=[currencyFormator stringFromNumber:[NSNumber numberWithDouble:[pdfObj.unitPrice doubleValue]]];
UIImage* img = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@/downloads/%@/files/%@.jpg",del.LocalPath,del.CompFolder,del.RepId,pdfObj.code]];
if(img!=nil)
[cell.imageView setImage:img];
else
[cell.imageView setImage:[UIImage imageNamed:@"no_privew95x77.jpg"]];
pdfObj=nil;
return cell;
//}
}
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { NSLog(@“数组计数=%i”,[self.arrProducts计数]); return [self.arrProducts count]; }
(无效)viewDidLoad中 { [super viewDidLoad];
NSString * strlogopath = [NSString stringWithFormat:@“%@ /%@ /%@”,del.LocalPath,del.CompFolder,del.CompInfo.ImageName]; [self.imgLogo setImage:[UIImage imageWithContentsOfFile:strlogopath]]; strlogopath = nil; [self filldata];
} - (无效)filldata { //这里我正在填充arrProduct NSMutableArray中许多表的数据我已经删除了StackOverflow的行数以获得代码复杂性。我准确地在arrProduct中获取数据。
[self.arrProducts addObject:pdfData];
[SQLHelper finalizeStatement:stmt];
}
@catch (NSException *exception)
{
NSLog(@"%@",exception.description);
}
@finally
{
[SQLHelper disconnectDB:database];
}
}
@end
// CurrentTransaction.m //在currentTransaction.m中我没有添加self.pdfViewController视图bcoz我不需要显示它。我必须拍摄屏幕才需要制作pdf文件 问题是我无法滚动表格进行下一行屏幕截图。
// someThere在这个类中我正在调用
[self.pdfViewController.tblProd scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:14 inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO];
//但是scrollToRowAtIndexPath没有在PDFViewController中调用CellForRowAtIndexPath。我可以看到调试信息只有14行可见0位置14行。
答案 0 :(得分:2)
您正在访问另一个视图控制器中的表(来自CurrentTransaction视图控制器的pdfViewController),但是您作为索引路径传递CurrentTransaction视图indexPath,如果您的CurrentTransaction视图没有tableView或者TableView没有14行,或者它将具有无效的NSIndexPath。
我建议在pdfViewController中添加一个自定义公共方法,它将滚动到该行。像这样:
- (void)scrollToRow:(int)row atSection:(int)section {
[self.tblProd scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:14 inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO]
}
然后在CurrentTransaction.m中替换
[self.pdfViewController.tblProd scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:14 inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO];
使用:
[self.pdfViewController scrollToRow:14 atSection:0];
应该可以正常工作!