【问题标题】:How to persist my View Controller如何持久化我的视图控制器
【发布时间】:2013-03-03 14:55:17
【问题描述】:

当我离开 View Controller 时,我使用:

[self dismissViewControllerAnimated:YES completion:nil];

这会“破坏”视图控制器及其状态吗?

我想将视图控制器保持在它所处的状态,滚动视图和按钮等,然后当我按下处理进入 VC 的父级按钮时返回到它。我在父级中使用这样的代码:

- (void)handleDoubleTap:(UITapGestureRecognizer *)doubleTap {

realTaggingScreen = [[TaggingScreenViewController alloc]init];
realTaggingScreen.topLeftCornerImage = self.imageToPresent;
realTaggingScreen.salescallDate = self.salescallDate;
realTaggingScreen.shopName = self.shopName;
realTaggingScreen.refToThumbnailsVC = self.presentingThumbnailViewController;
realTaggingScreen.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:realTaggingScreen animated:YES];

}

我知道这是由于 alloc init 而显然错误的。

我试图给我的标记屏幕一个对父级的引用和一个名为 iExist 的 BOOL,以及给我的父级一个对标记屏幕的引用,然后如果 BOOL 为真,则打开对子级的引用,否则 alloc init等,但这没有用。我不禁认为这不是正确的方法......

我还想在 NSDocuments 目录中保存某些对象并在应用程序运行之间加载它们等,但我知道该怎么做。现在我会找到一种让 VC 状态暂时保持的方法

任何帮助都会很好。

【问题讨论】:

    标签: ios objective-c uiviewcontroller state persist


    【解决方案1】:

    如果你使用 ARC,如果没有指针指向它,视图控制器将被释放。

    我建议创建一个指向 realTaggingScreen 实例的强指针

    类似

    @property(nonatomic, strong)TaggingScreenViewController *realTaggingScreen;
    

    如果我得到你想要做的,你不需要 BOOL iExist。 你可以使用

    self.realTaggingScreen = nil; 
    

    如果您不再需要它继续存在 然后您可以检查是否需要使用分配新实例

     if(self.realTaggingScreen) {
    //initialize...
    }
    

    【讨论】:

      【解决方案2】:

      当您关闭视图控制器时,它会被释放。

      当然,除非这为您提供了答案,否则您会在某处保留一些强烈的参考。

      AppDelegate 可能是保存引用或调用视图控制器的好位置。取决于你想如何处理它。如果您保留一个强大的参考以供以后使用,那么请记住您只是在下次展示它但不要再次创建 (alloc,init) 它。

      如果您保留参考并重复使用它,请确保一次仅显示一次。 例如。您不应该让您的应用程序(委托)呈现控制器 A,控制器 A 呈现控制器 B,而控制器 B 呈现控制器 C,而 C 再次呈现 B。如果你想这样做,那么你应该在 C 中创建 B 的第二个实例并呈现这个 B2。

      (您可以在其他地方第二次显示视图,这将使其从旧位置移动到新位置,但您不应该在视图层次结构中的视图控制器中执行此操作 - 无论您是呈现还是推送它们.)

      【讨论】:

      • 感谢您的建议。我接受了另一个答案,因为它有代码并且更短。不过谢谢你的解释。
      猜你喜欢
      • 2015-05-18
      • 1970-01-01
      • 2013-07-19
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多