任何人都可以请,哦,甜蜜的痛苦,请通过写一个简单的例子来解释你是如何将你在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开发书,开发文档,天知道什么不是,没有结果。
非常感谢任何帮助......
叹息。
答案 0 :(得分:0)
希望这能让你摆脱痛苦......
QuartzImages.m中的QuartzPDFView类实际上并未在MainViewController的viewDidLoad中实例化。在那里,它的类标识只存储在提供菜单的表视图引用的字典/数组中。
实际的石英视图对象保存在QuartzViewController中,QuartzViewController本身是在MainViewController的didSelectRowAtIndexPath方法中创建的。
当创建QuartzViewController并将其推送到导航控制器时,QuartzViewController的viewDidLoad会触发,将self.quartzView添加为子视图。 quartzView的getter方法(在QVC的viewDidLoad之上)最终创建了石英视图对象。
所以告诉石英视图加载一个给定的页面,这是一种方法(可能不是最优雅的):
小问题是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似乎没有多个页面。