【问题标题】:Modifying QuartzDemo example application修改 QuartzDemo 示例应用程序
【发布时间】:2011-02-22 14:05:08
【问题描述】:

谁能写一个简单的例子,说明如何将一个在 1 .m 文件中创建的数字(int 值)传递给另一个 .m 文件。

在名为 QuartzDemo 的苹果演示应用程序中,有一个名为 QuartzImages.m 的文件

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: iphone iphone-sdk-3.0


    【解决方案1】:

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

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

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

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

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

    1. 向 QuartzPDFView 类添加 pageNumber 属性
    2. 在 MainViewController 的 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);
    ...
    

    第二步:在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 似乎没有超过一页。

    【讨论】:

      猜你喜欢
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 2010-10-15
      • 1970-01-01
      • 2014-03-13
      相关资源
      最近更新 更多