0

我在较大的代码项目中需要这个小的 PDFMaker 代码,这对于 PDFMaker 来说几乎是完成的。我更大的项目都是在情节提要中完成的,而 PDFMaker 在 xib 中完成。我没有看到您如何在同一个项目中同时完成它们。我使用 Apple “转换为情节提要发行说明”将 PDFMaker 从 xib 转换为情节提要。非常简单明了。但是,我无法让didClickMakePDFordidClickOpenPDF选择器工作。我不断收到消息

无法识别的选择器发送到实例

Main.m和一个指向文件的线程指针

return UIApplicationMain(argc, argv, nil, NSStringFromClass([MTAppDelegate class]));"

线。我是编码新手,已经为此工作了 20 多个小时,但没有成功。.h、.m 和情节提要文件中的所有动作和出口似乎都设置得很好。有人可以帮我解决这个问题,或者建议一种不同的方法来在基于故事板的项目中使用这个 PDFMaker 代码吗?

这是我的 .h 文件:

#import <UIKit/UIKit.h>
#import "ReaderViewController.h"

@interface MTViewController : UIViewController <ReaderViewControllerDelegate>

- (IBAction)didClickMakePDF:(id)sender;
- (IBAction)didClickOpenPDF:(id)sender;

@end

以下是 didClickMakePDF 的 .m 文件的相关部分:

- (IBAction)didClickMakePDF:(id)sender {

    [self setupPDFDocumentNamed:@"NewPDF" Width:850 Height:1100];

    [self beginPDFPage];

    CGRect textRect = [self addText:@"This is some nice text here, don't you agree?"
                          withFrame:CGRectMake(kPadding, kPadding, 400, 200) fontSize:48.0f];

    CGRect blueLineRect = [self addLineWithFrame:CGRectMake(kPadding, textRect.origin.y + textRect.size.height + kPadding, _pageSize.width - kPadding*2, 4)
                                       withColor:[UIColor blueColor]];

    UIImage *anImage = [UIImage imageNamed:@"tree.jpg"];
    CGRect imageRect = [self addImage:anImage
                              atPoint:CGPointMake((_pageSize.width/2)-(anImage.size.width/2), blueLineRect.origin.y + blueLineRect.size.height + kPadding)];

    [self addLineWithFrame:CGRectMake(kPadding, imageRect.origin.y + imageRect.size.height + kPadding, _pageSize.width - kPadding*2, 4)
                 withColor:[UIColor redColor]];

    [self finishPDF];
}

这是 Main.m 文件:

#import <UIKit/UIKit.h>

#import "MTAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([MTAppDelegate class]));
    }
}
4

1 回答 1

0

您的错误消息包含选择器didClickMakePDF(没有冒号,因此没有参数),但您的代码使用了选择器didClickMakePDF:(带有冒号,因此需要一个参数)。这些是不同的选择器。

在情节提要中,您需要删除从按钮到那些(不正确)操作的连接,并创建从按钮到正确操作的连接。

更新

有时情节提要编辑器(“Interface Builder”或 IB)与源代码不同步,记住您已删除的方法或忽略您创建的方法。以下是一些可以尝试的事情,按照残酷程度的递增顺序排列:

  1. 确保所有文件都已保存。(Command-Option-S 保存所有文件。)

  2. 反复按 Control-Command-W 关闭项目窗口中的所有文件,直到编辑器窗口为空白。

  3. 退出并重新启动 Xcode。

  4. 按 Option-Shift-Command-K 清理构建文件夹。

  5. 删除项目的派生数据文件夹。关闭您的项目,然后打开“管理器”窗口并单击“项目”选项卡。在左侧列表中单击您的项目。然后单击右侧窗格中派生数据行右侧的删除...按钮。

更新 2

当您从应用程序中删除资源文件(如 xib 文件)然后运行应用程序时,Xcode 不会从模拟器或设备上的应用程序安装中删除资源文件。您需要从模拟器或设备中完全删除该应用程序(以通常的方式,通过使图标摆动然后点击 X 按钮)以删除过时的 xib 文件。

于 2013-06-05T23:49:51.820 回答