iPhone: приложение вылетает при отображении опции печати из UIButton - PullRequest
0 голосов
/ 17 августа 2011

В моем приложении я отображаю параметр печати из 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 голосов
/ 20 сентября 2011

Хорошо. Я решил свою проблему.

Параметр view, в котором вы собираетесь указать print. Он должен содержать navigation controller.

Итак, Мое решение

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

Это странное решение. но у меня сработало.

0 голосов
/ 17 августа 2011

Почему вы не можете использовать: [self presentViewController: animated: completion:];?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...