最后我找到了解决方案,
我认为这个问题可能是由于当我们尝试在其上显示视图控制器时拆分视图无法关闭根视图控制器。我像这样更改了上述功能
-(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;
}
}
感谢上帝,