-1

实际上,我需要为我的项目中的所有交易制作 pdf 文件。所以我用 .xib 创建了 PDFViewController 类,其中包含 uiView、uitableView 等。

我没有向用户展示这个课程,我正在拍摄这个课程视图的屏幕截图,以便为所有交易制作 pdf。

我的问题是我可以拍摄屏幕截图视图和表格,但表格中有很多行,所以我需要滚动它以仅为表格视图拍摄屏幕截图,但它不能滚动。

请参阅下面的代码任何帮助将不胜感激。谢谢

@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(@"Array Count is = %i",[self.arrProducts count]); 返回 [self.arrProducts 计数];}

    • (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; }
    • (void)viewDidLoad { [超级 viewDidLoad];

      NSString* strlogopath = [NSString stringWithFormat:@"%@/%@/%@",del.LocalPath,del.CompFolder,del.CompInfo.ImageName]; [self.imgLogo setImage:[UIImage imageWithContentsOfFile:strlogopath]]; strlogopath = nil; [自填数据];

    } -(void)filldata { //这里我正在从 arrProduct NSMutableArray 中的许多表中填充数据我已经删除了 StackOverflow 的行数以提高代码复杂性。我正在准确地获取 arrProduct 中的数据。

            [self.arrProducts addObject:pdfData];
    
    
        [SQLHelper finalizeStatement:stmt];
    }
    @catch (NSException *exception)
    {
        NSLog(@"%@",exception.description);
    }
    @finally 
    {
        [SQLHelper disconnectDB:database];
    }
    

    }

    @结尾

    // CurrentTransaction.m // 在 currentTransaction.m 我没有添加 self.pdfViewController 视图,因为我不需要显示它。我只需要截屏然后需要制作pdf文件问题是我不能滚动表格来截取下一行的屏幕截图。

    • (UIView *)loadTemplate:(PrintChoice_t)type { if (type==Small_Photo) { self.pdfViewController=[[PDFViewController alloc]initWithNibName:@"PDFViewController" bundle:[NSBundle mainBundle] ReferenceController:& self]; } 返回 self.pdfViewController.view; }

    //someWhere 在这个类中我正在调用

    [self.pdfViewController.tblProd scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:14 inSection:0] atScrollPosition:UITableViewScrollPositionNone 动画:NO];

    //但是 scrollToRowAtIndexPath 没有在 PDFViewController 中调用 CellForRowAtIndexPath。我只能看到调试信息 14 行可见 0 位置 14 行。

4

1 回答 1

2

您正在另一个视图控制器中访问表(来自 CurrentTransaction 视图控制器的 pdfViewController),但是您将 CurrentTransaction 视图 indexPath 作为 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];

那么应该可以正常工作!

于 2012-09-21T10:03:58.273 回答