在我的应用中,我使用以下代码显示来自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];
现在,我没有使用导航控制器。所以我不能使用上面的方法。
我该怎么办?
答案 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];
奇怪的解决方案。但为我工作。