iPhone:应用程序在显示UIButton的打印选项时崩溃

时间:2011-08-17 05:45:05

标签: iphone objective-c cocoa-touch ios4

在我的应用中,我使用以下代码显示来自UIButton的打印选项。

    UIPrintInfo* printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = NSLocalizedString(@"Offerings", @"");


    UIMarkupTextPrintFormatter *formatter = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:@"Share"];
    formatter.startPage = 0;


    CGFloat margin = 72.0f * 0.1f;
    formatter.contentInsets = UIEdgeInsetsMake(margin, margin, margin, margin);


    UIPrintInteractionController* pic = [UIPrintInteractionController sharedPrintController];
    pic.delegate = self;
    pic.showsPageRange = YES;
    pic.printInfo = printInfo;
    pic.printFormatter = formatter;
    [formatter release];

    void (^completionHandler)(UIPrintInteractionController*, BOOL, NSError*) = ^(UIPrintInteractionController* printController, BOOL completed, NSError* error)
    {
        if (!completed && error)
        {
            UIAlertView* alert = [[UIAlertView alloc]
                                  initWithTitle:NSLocalizedString(@"Printing Error", @"")
                                  message:[error localizedDescription]
                                  delegate:nil
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil];

            [alert show];
            [alert release];
        }
    };

我尝试过以下选项。

    [pic presentAnimated:YES completionHandler:completionHandler];

OR

    [pic presentFromRect:CGRectMake(btnPrint.frame.origin.x, btnPrint.frame.origin.y, btnPrint.frame.size.width, btnPrint.frame.size.height) inView:self.view animated:YES completionHandler:completionHandler];

但它因错误而崩溃:EXE_BAD_ACCESS

但是当我尝试使用代码显示打印选项时,它运行正常。

  [pic presentFromBarButtonItem:self.navigationItem.rightBarButtonItem animated:YES completionHandler:completionHandler];

现在,我没有使用导航控制器。所以我不能使用上面的方法。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

为什么不能使用:[self presentViewController: animated: completion:];

答案 1 :(得分:0)

确定。我已经解决了我的问题。

view您要提供print选项的地方。它应该包含navigation controller

所以,我的解决方案

First *first = [[First alloc] initWithNibName:@"First"];
UINavigationController *nav = [[UINavigationController alloc] initWithRootView:@"first"];
[self presentViewController:nav animated:YES];

奇怪的解决方案。但为我工作。