gpt4 book ai didi

iOS 5.1 UISplitviewcontroller 不允许来自 RootViewController 的 presentModalViewController

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:12:45 24 4
gpt4 key购买 nike

我使用以下代码显示来自 splitviewcontroller 的 RootViewcontroller 的 viewcontroller。它不会在 iOS 5.1 纵向模式下显示任何内容。当横向显示 Rootviewcontroller 内的 Controller 。它在 iOS 5.0 之前运行良好。

-(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;

[self presentModalViewController:objNavigationController animated:YES];

[objNavigationController release];
objNavigationController = nil;

[objiPadDocumentReader release];
objiPadDocumentReader = nil;
}

我使用 self.splitviewcontroller 并使用 detailviewcontroller instance 而不是 self。

但在这种情况下,当我们单击 detailview controller 以关闭/删除 rootviewcontroller 时,它会导致崩溃,并显示类似“没有 View 窗口”之类的内容。

此外,有时在 iOS 5.1 中,RootView 显示方向错误。

提前致谢

最佳答案

终于找到解决方法了,

我认为问题可能是由于当我们尝试在其上呈现 View Controller 时, Split View无法关闭 Root View Controller 。我把上面的函数改成了这样

-(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;
}

我在这里粘贴了允许我找到 Split View弹出窗口的 Split View委托(delegate)。

#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;
}
}

感谢上帝,

关于iOS 5.1 UISplitviewcontroller 不允许来自 RootViewController 的 presentModalViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9818563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com