【发布时间】:2015-08-14 08:31:50
【问题描述】:
我正在将一个旧应用程序更新为新的自适应大小的处理方式,并且很难让带有导航控制器的弹出框工作。
我的目标:当应用程序紧凑且常规水平时,我希望能够从按钮打开弹出框。弹出框有一个表格视图,并在用户触摸表格上的一行时使用导航控制器推送视图控制器。我可以让弹出框正确打开,但我不知道由谁来进行推送。
这是打开弹出框的代码:
OptionsController *vc = [[OptionsController alloc] initWithNibName:@"OptionsView" bundle:nil];
vc.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popover = [vc popoverPresentationController];
popover.delegate = self;
[self presentViewController:vc animated: YES completion: nil];
popover.permittedArrowDirections = UIPopoverArrowDirectionUp; // change as necessary
popover.sourceView = self.view;
CGRect popoverRect = [self.view convertRect:[sender frame] fromView:[sender superview]];
popover.sourceRect = popoverRect;
此代码正确打开紧凑或常规大小的弹出框。
在OptionsController的didSelectRowAtIndexPath方法中,我有这个(controllersArray是UIViewControllers的数组,每个对应表中的一行):
UIViewController *nextController = [self.controllersArray objectAtIndex: [indexPath row]];
[self.navigationController pushViewController:nextController animated:YES];
这一切都执行了,但没有推送发生,所以下一个视图永远不会出现。
我显然不了解如何使用 UIViewController 的 navigationController,或者如何安装 navigationController 来完成这项工作。经过三四天的挖掘以尝试了解如何进行这项工作,我将不胜感激任何见解或有关如何执行此操作的文档的链接。提前致谢。
【问题讨论】:
-
你想在哪里推送 vc.. 在你的主 vc 中打开 popover 或在 vc 本身上弹出。
-
我想从弹出框推送视图控制器。
-
引用的链接是在弹出框被实现为presentationControllers之前完成的。如果我按下导航控制器,我会得到一个模态全屏视图——这不是我想要的。我希望能够打开一个弹出框 - 作为演示控制器 - 其中有一个工作导航控制器。我还没有弄清楚如何在 iOS8/9 中做到这一点。
标签: ios adaptive-layout