我需要帮助解决这个问题,我已经有两天了。假设我有一个处理图像幻灯片的自定义视图控制器,它可以用于嵌入视图或通过导航控制器或模态视图显示。它还具有全屏选项,可以使用此代码打开
_fullScreenWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; _fullScreenWindow.backgroundColor = [UIColor blackColor]; _fullScreenWindow.windowLevel = UIWindowLevelNormal; _fullScreenWindow.rootViewController = self; [_fullScreenWindow makeKeyAndVisible];
我预先存储了原始窗口,因此我可以在退出全屏时恢复其状态。这也调用了方向方法,当它在导航控制器中时不会被调用。因此,在全屏模式状态下,有一个选项可以显示为uitableviewcontroller,所以理论上我可以使用此代码来呈现它。
UITableViewController *mediaOptionsController = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:mediaOptionsController]; [navController setModalPresentationStyle:UIModalPresentationFormSheet]; navController.navigationBar.topItem.leftBarButtonItem = dismissButton; //mainViewController is the custom view controller, which is on different uiwindow [mainViewController presentViewController:navController animated:YES completion:nil];
但是每当我使用此选项而无法呈现时,我都会收到此警告
警告:尝试在视图不在窗口层次结构中的UINavigationController上呈现UINavigationController!
知道为什么它不起作用?只是因为你知道在app委托上设置根控制器是不可行的,因为我直接进入根控制器的视图而不是导航控制器的当前顶视图
答案 0 :(得分:0)
不是真正的解决方案,但我解决了这个问题,解雇了第二个窗口并使主窗口键,然后从那里显示选项。只有退出选项,我才能再次制作第二个窗口键。