-1

実際、プロジェクト内のすべてのトランザクションの pdf ファイルを作成する必要があります。そこで、uiView、uitableView などを含む .xib を使用して PDFViewController クラスを作成します。

私はこのクラスをユーザーに表示していません。内部的に、このクラス ビューのスクリーン ショットを撮って、すべてのトランザクションの 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]); return [self.arrProducts カウント]; }

    • (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 1 を返します。}
    • (void)viewDidLoad { [super 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 ビュー bcoz を追加していません。表示する必要はありません。私はスクリーンショットを撮るだけで、PDFファイルを作成する必要があります。問題は、テーブルをスクロールして次の行のスクリーンショットを撮ることができないことです。

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

    //このクラスのどこで私が呼び出しているか

    [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 をインデックスパスとして渡しています。 14 行ではないか、無効な NSIndexPath になります。

行にスクロールするカスタム public メソッドを 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 に答える