我最初使用标签栏控制器为iPhone编程我的应用程序视图控制器初始化一次并保持持久性 - 当我点击标签栏时,它不会初始化视图控制器的新实例。
iPad上的我正在使用不同的GUI而不是我有一个主视图总是停留在屏幕上,其余的是从主视图中消失的弹出窗口。
我希望popovers保持持久性(只初始化一次)什么是归档的最佳方式。如果我一直在使用* .xib文件,我可以在主视图中初始化popover的视图控制器,然后在segueing时发送它们的副本,这样只有一个实例。但我正在使用故事板。
答案 0 :(得分:1)
如果您希望控制器是持久的,则不能使用segues,因为segue总是实例化新控制器。您仍然可以使用故事板,但必须保持控制器不连接,并在代码中实例化它们,并将它们分配给强大的属性。所以,像:
-(void)presentPopover {
if (! self.vc) {
self.vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyController"];
}
// do what you want here to put vc on screen
}
答案 1 :(得分:0)
我找到了一个解决方案,实际上很简单,只需使用UIPopoverController并使用您想要呈现的视图控制器对其进行初始化。这样,每次请求弹出窗口时,它都不会实例化新实例。
if (!popoverController)
popoverController = [[UIPopoverController alloc]initWithContentViewController:bellViewController];
[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popoverController.delegate=self;