0

我最初使用标签栏控制器为 iPhone 编写了我的应用程序,视图控制器被初始化一次并保持持久 - 当我点击标签栏时,它不会初始化视图控制器的新实例。

在 iPad 上,我使用的是不同的 GUI,而是我有一个始终保持在屏幕上的主视图,其余的是从主视图中分离出来的弹出框。

我希望弹出框保持持久性(仅初始化一次)什么是最好的存档方式。如果我一直在使用 *.xib 文件,我可以在主视图中初始化 popover 的视图控制器,然后在 segueing 时发送它们的副本,这样只有一个实例。但我正在使用故事板。

4

2 回答 2

1

如果你希望你的控制器是持久的,你不能使用 segues,因为 segues 总是实例化新的控制器。您仍然可以使用情节提要,但您必须让控制器保持未连接状态,并在代码中实例化它们,并将它们分配给强属性。所以,像:

-(void)presentPopover {
    if (! self.vc) {
        self.vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyController"];
    }
    // do what you want here to put vc on screen
}
于 2013-09-14T22:02:39.443 回答
0

我找到了一个解决方案,实际上它很简单,只需使用 UIPopoverController 并使用您要呈现的视图控制器对其进行初始化。这样,每次请求弹出框时,它都不会实例化新实例。

if (!popoverController)
    popoverController = [[UIPopoverController alloc]initWithContentViewController:bellViewController];


[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popoverController.delegate=self;
于 2013-09-14T23:03:11.767 回答