Перемещение UIPrintInteractionController в стек UINavigationController

Документация для UIPrintInteractionControllerDelegate, по-видимому, предполагает, что вы можете использовать printInteractionControllerParentViewController: для возврата UIViewController, который можно использовать для помещения UIPrintInteractionController в стандартный стек UINavigationController, почти так же, как это делается в Pages.app для iOS, но, несмотря на мои попытки для этого все, что мне удалось сделать, это поместить пустой объект UIViewController в стек, и больше ничего.

Есть ли у кого-нибудь идеи, как это делается, и можно ли это сделать вообще?

(Чтобы было ясно, меня не интересуют какие-либо методы, использующие частные API или тому подобное.)


person Daniel Farrelly    schedule 30.05.2012    source источник


Ответы (1)


У меня была та же проблема с попыткой заставить параметры принтера отображаться в NavigationController, аналогичном Pages.
Важным моментом является реализация printInteractionControllerParentViewController UIPrintInteractionControllerDelegate для возврата NavigationController.
Этот метод будет вызываться только из текущий метод UIPrintInteractionController.
Документы Apple по UIPrintInteractionControllerDelegate

Пример кода:

// Just some code to return a UIPrintInteractionController
// Important to set delegate to self
- (UIPrintInteractionController *)printContent {
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
if  (pic && [UIPrintInteractionController canPrintURL:[self fileToPrint]]) {
    pic.delegate = self;
    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = @"OutputFile";
    printInfo.duplex = UIPrintInfoDuplexLongEdge;
    pic.printInfo = printInfo;
    pic.showsPageRange = YES;
    pic.printingItem = self.fileToPrint;
}
return pic;
}

Реализуйте метод делегата printInteractionControllerParentViewController.

// Implement the delegate method simply to return navigationController
- (UIViewController *)printInteractionControllerParentViewController:(UIPrintInteractionController *)printInteractionController{
return self.navigationController;
}

Делегат будет вызываться только в том случае, если вы запустите метод Present UIPrintInterfaceController, например. настоящее время от прямоугольника:

// Need to call a present method to invoke the delegate method
[[self printContent] presentFromRect:[self.view frame] inView:self.view animated:NO completionHandler:completionHandler];
person Peter Todd    schedule 30.12.2012
comment
Казалось бы, моя проблема заключалась в том, что я не использовал настоящий метод. Спасибо! - person Daniel Farrelly; 05.02.2013
comment
Я все еще не могу заставить это работать должным образом, можете ли вы поделиться всем своим кодом? - person Kyle Begeman; 18.08.2014