希望這把你帶離痛苦......
在QuartzImages.m的QuartzPDFView類不MainViewController的viewDidLoad中實際實例。在那裏,它的類標識只存儲在提供菜單的表視圖引用的字典/數組中。
實際的石英視圖對象保存在QuartzViewController中,它本身是在MainViewController的didSelectRowAtIndexPath方法中創建的。
當QuartzViewController被創建並推送到導航控制器時,QuartzViewController的viewDidLoad觸發器將self.quartzView添加爲子視圖。 quartzView的getter方法(在QVC的viewDidLoad上方)最終創建石英視圖對象。
於是告訴石英視圖加載指定頁面,在這裏是做(未必是最優雅的)的一種方法:
- 一個PAGENUMBER屬性添加到QuartzPDFView類
- 設置此屬性在didSelectRowAtIndexPath方法方法中MainViewController
次要問題是,在該QuartzViewController屬性quartzView可以是不同種類的石英次(不只是QuartzPDFView)。所以你需要在嘗試設置pageNumber屬性之前檢查它是否爲QuartzPDFView。
步驟1:PAGENUMBER屬性添加到QuartzPDFView類:
//QuartzImages.h
@interface QuartzPDFView : QuartzView
{
CGPDFDocumentRef pdf;
int pageNumber;
}
@property (nonatomic, assign) int pageNumber;
-(void)drawInContext:(CGContextRef)context;
@end
//QuartzImages.m
@implementation QuartzPDFView
@synthesize pageNumber;
...
CGPDFPageRef page = CGPDFDocumentGetPage(pdf, pageNumber);
...
步驟2:設置在didSelectRowAtIndexPath方法方法此屬性在MainViewController
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
QuartzViewController *targetViewController = [self controllerAtIndexPath:indexPath];
if ([targetViewController.quartzView isKindOfClass:[QuartzPDFView class]])
{
((QuartzPDFView *)targetViewController.quartzView).pageNumber = 1;
//replace 1 with whatever number or variable you want
}
[[self navigationController] pushViewController:targetViewController animated:YES];
}
在示例應用程序的PDF順便說一下,似乎沒有超過一頁的內容。
這是我正在尋找的答案。這不能被分類爲唯一的答案。這可能是「互聯網」上爲我所做的最善良的事情。 非常感謝。當我終於完成編譯和工作,因爲我希望它能夠工作時,詞彙無法描述我的感受:) 如果我們的路徑一直存在,您至少應該有一頓晚餐和啤酒。 謝謝。 – BittenApple 2010-05-22 09:21:11