帮助修改QuartzDemo示例应用程序

时间:2010-05-21 22:51:31

标签: iphone iphone-sdk-3.0

任何人都可以请,哦,甜蜜的痛苦,请通过写一个简单的例子来解释你是如何将你在1 .m文件中创建的数字(int值)传递给另一个.m文件的。 / p>

在名为QuartzDemo的apple演示应用程序中,有一个名为QuartzImages.m

的文件

此文件包含以下代码行: [CODE] CGPDFPageRef page = CGPDFDocumentGetPage(pdf,1); [/ CODE] 注意该行中的(pdf,1)。该数字应替换为整数变量。

现在,还有一个名为MainViewController.m的文件。 在那个文件中,有一种方法吗?叫 - (void)viewDidLoad

在那个方法中,我想为整数变量分配一个数字,它将用我想要的数字替换该死的“1”。

我一直在拉着我的头发试图完成这件事,阅读开始的iPhone 3开发书,开发文档,天知道什么不是,没有结果。

非常感谢任何帮助......

叹息。

1 个答案:

答案 0 :(得分:0)

希望这能让你摆脱痛苦......

QuartzImages.m中的QuartzPDFView类实际上并未在MainViewController的viewDidLoad中实例化。在那里,它的类标识只存储在提供菜单的表视图引用的字典/数组中。

实际的石英视图对象保存在QuartzViewController中,QuartzViewController本身是在MainViewController的didSelectRowAtIndexPath方法中创建的。

当创建QuartzViewController并将其推送到导航控制器时,QuartzViewController的viewDidLoad会触发,将self.quartzView添加为子视图。 quartzView的getter方法(在QVC的viewDidLoad之上)最终创建了石英视图对象。

所以告诉石英视图加载一个给定的页面,这是一种方法(可能不是最优雅的):

  1. 将pageNumber属性添加到QuartzPDFView类
  2. 在MainViewController
  3. 中的didSelectRowAtIndexPath方法中设置此属性

    小问题是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步:在MainViewController中的didSelectRowAtIndexPath方法中设置此属性

    - (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似乎没有多个页面。