【问题标题】:Making a popover segue´s View Controller stay persistent (only allocate one instance)使 popover segue 的 View Controller 保持持久(仅分配一个实例)
【发布时间】:2013-09-14 21:18:02
【问题描述】:

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

在 iPad 上,我使用的是不同的 GUI,但我有一个始终停留在屏幕上的主视图,其余的都是与主视图分离的弹出框。

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

【问题讨论】:

    标签: ios uiviewcontroller xib uipopovercontroller segue


    【解决方案1】:

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

    -(void)presentPopover {
        if (! self.vc) {
            self.vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyController"];
        }
        // do what you want here to put vc on screen
    }
    

    【讨论】:

    • 我找到了一个快速解决方案,使用您的代码从情节提要初始化视图控制器。
    【解决方案2】:

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

    if (!popoverController)
        popoverController = [[UIPopoverController alloc]initWithContentViewController:bellViewController];
    
    
    [popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    popoverController.delegate=self;
    

    【讨论】:

      猜你喜欢
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多