Object-c 无法访问视图控制器

Posted

技术标签:

【中文标题】Object-c 无法访问视图控制器【英文标题】:Object-c cannot access viewcontroller 【发布时间】:2011-11-29 12:02:57 【问题描述】:

解决方案:Blogpost


我正在使用 Titanium 进行应用程序开发,并正在尝试创建一个新模块来扩展应用程序功能。

1) 模块已启动并正在运行 - 修复! 2)向模块添加“自定义”/功能 - ERR。

我正在关注这个http://iosguy.com/2010/09/04/presenting-pdf-files-by-yourself/ 而且我真的不确定我需要将这些功能放在哪里以及为什么要放置这些功能,我如何创建提到的视图等等。

这就是我到目前为止所得到的: 我已经读到 comas3breezepdfModule.m 文件是我需要使用的文件,因此来自上述链接的功能被粘贴在这个 .m 文件中,如下所示:

-(CGPDFDocumentRef)openDocument:(CFURLRef)url

    CGPDFDocumentRef myDocument = CGPDFDocumentCreateWithURL(url);
    if (myDocument == NULL) 
        return 0;
    
    if (CGPDFDocumentIsEncrypted (myDocument)
        || !CGPDFDocumentIsUnlocked (myDocument)
        || CGPDFDocumentGetNumberOfPages(myDocument) == 0) 
        CGPDFDocumentRelease(myDocument);
        return 0;
    
    return myDocument;


-(CGPDFDocumentRef)document 

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"presentation" ofType:@"pdf"];
    NSURL *url = [[NSURL alloc] initFileURLWithPath:filePath];
    CGPDFDocumentRef pdfdocument = [self openDocument:(CFURLRef)url];
    [url release];
    return pdfdocument;


- (void)load 
    UIViewController* controller = nil;
    NSInteger numberOfPages = CGPDFDocumentGetNumberOfPages([self document]);
    for (NSInteger pageIndex = 1; pageIndex <= numberOfPages; pageIndex++) 
        CGPDFPageRef page = CGPDFDocumentGetPage([self document], pageIndex);
        PDFPageView *pageView = [[PDFPageView alloc] initWithFrame:scrollView.bounds];
        pageView.page = page;
        pageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
        pageView.autoresizesSubviews = YES;
        pageView.backgroundColor = [UIColor whiteColor];
        [scrollView addSubview:pageView];

        [pageView release];
    

然后我尝试创建一个新的 viewcontroller 子类,其中我有一个 PDFPageView.h 和 PDFPAgeView.m 文件...但是我尝试和测试的结果仍然是在负载中创建 pageView 对象时出现一堆错误功能。

如下:

comas3breezepdfModule.m: error: Semantic Issue: Use of undeclared identifier 'scrollView'; did you mean 'UIScrollView'?
comas3breezepdfModule.m: error: Semantic Issue: Property 'page' not found on object of type 'PDFPageView *'
comas3breezepdfModule.m: error: Semantic Issue: Property 'autoresizingMask' not found on object of type 'PDFPageView *'
comas3breezepdfModule.m: error: Semantic Issue: Property 'autoresizesSubviews' not found on object of type 'PDFPageView *'
comas3breezepdfModule.m: error: Semantic Issue: Property 'backgroundColor' not found on object of type 'PDFPageView *'
comas3breezepdfModule.m: error: Semantic Issue: Unknown receiver 'scrollView'; did you mean 'UIScrollView'?
comas3breezepdfModule.m: warning: Semantic Issue: Method '+addSubview:' not found (return type defaults to 'id')

谁能指出我正确的方向?

最糟糕的是我每天都在使用 Java、JS、AS3,但是一旦我用 xCode 打开一些东西,我的大脑就会一片空白,我什至不知道函数是什么了。 一直在尝试理解这里的逻辑,现在差不多 5 周了,但感觉就像我在倒退,理解得更少......

【问题讨论】:

【参考方案1】:

所有错误都表明编译器找不到各种参数的声明。请验证您是否添加了适当的头文件并且还合成了所有声明的属性。

【讨论】:

嗯。实际上我不确定。这是我的 PDFPageView.h 内容:#import &lt;UIKit/UIKit.h&gt; @interface PDFPageView : UIViewController &lt;UIScrollViewDelegate&gt; UIScrollView *scrollView; CGPDFDocumentRef *pdfdocument; - (void)scrollViewDidScroll:(UIScrollView *)scrollView; - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; @end,我尝试在 PDFPageView.m 文件中合成 scrollView 和 pdfdocument,但这些也会产生错误【参考方案2】:

您应该显示您的 .h 文件,并在其中生成错误,有几种可能性,其中之一是 PDFPage 类不在您的搜索路径中......通常是文件夹(lib..)存储框架的位置,解决方法是通过单击应用程序图标并修改构建设置来添加搜索路径......搜索路径!

【讨论】:

以上是关于Object-c 无法访问视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

无法从控制器 laravel 访问视图中的变量

ios - 无法从其他视图控制器访问数据

无法访问容器视图的 tableview 控制器元素

无法从 Objective-C 视图控制器访问 Swift var - iOS

视图初始化时无法访问托管对象上下文

无法使用 Rails 上的自定义布局访问视图上的实例变量