Наконец-то я нашел решение,
Я думаю, что проблема может заключаться в том, что разделенное представление не может закрыть контроллер корневого представления, когда мы пытаемся представить контроллер представления поверх него.Я изменил вышеупомянутую функцию следующим образом:
-(void)displayFileInReader:(NSURL *)fileURL
{
SPDocumentReader *objiPadDocumentReader = [[SPDocumentReader alloc] init];
objiPadDocumentReader.readerType = ReaderTypeLocalCachedDocument;
objiPadDocumentReader.url = fileURL;
UINavigationController *objNavigationController = [[UINavigationController alloc] initWithRootViewController:objiPadDocumentReader];
objNavigationController.navigationBar.barStyle = UIBarStyleBlack;
//to dismiss the splitview popover -to solve iOS5.1 splitview issue.
[self.delegate dismissSplitViewPopOverController];
[self presentModalViewController:objNavigationController animated:YES];
[objNavigationController release];
objNavigationController = nil;
[objiPadDocumentReader release];
objiPadDocumentReader = nil;
}
Здесь я вставил делегат с разделенным видом, который позволяет мне найти поповер с разделенным видом.
#pragma mark - UISplitView delegate
// Called when rotating to a portrait orientation.
- (void)splitViewController: (UISplitViewController*)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem*)barButtonItem
forPopoverController: (UIPopoverController*)pc {
barButtonItem.title = SPLocaleString(@"[Navigator]");
self.navigationItem.leftBarButtonItem = barButtonItem;
splitPopoverController = pc;
[splitPopoverController retain];
}
// Called when the view is shown again in the split view, invalidating the button and popover controller.
- (void)splitViewController: (UISplitViewController*)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
self.navigationItem.leftBarButtonItem = nil;
[splitPopoverController release];
splitPopoverController = nil;
}
-(void)splitViewController:(UISplitViewController *)svc
popoverController:(UIPopoverController *)pc
willPresentViewController:(UIViewController *)aViewController
{
if (splitPopoverController)
{
[splitPopoverController release];
splitPopoverController = nil;
}
splitPopoverController = pc;
[splitPopoverController retain];
}
- (void)dismissSplitViewPopOverController {
// If a popover controller is visible, hide it
if (splitPopoverController) {
[splitPopoverController dismissPopoverAnimated:NO];
[splitPopoverController release];
splitPopoverController = nil;
}
}
слава богу,