当我离开View Contoller时,我使用:
[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状态暂时保持
任何帮助都会很好。
答案 0 :(得分:2)
如果您使用ARC,如果没有指针指向它,视图控制器将被释放。
我建议创建一个指向realTaggingScreen实例的强指针
类似
@property(nonatomic, strong)TaggingScreenViewController *realTaggingScreen;
如果我得到你想做的事,你就不需要BOOL iExist了。 你可以用
self.realTaggingScreen = nil;
如果你不再需要它继续存在 然后你可以检查是否需要使用
分配一个新实例 if(self.realTaggingScreen) {
//initialize...
}
答案 1 :(得分:1)
当您关闭视图控制器时,它将被释放。
除非当然,这为你提供了答案,你在某处保留了一些强有力的参考。
AppDelegate可能是保留引用或调用视图控制器的好位置。取决于你想如何处理它。如果你保留一个强大的参考供以后使用,那么请记住你下次只提供它但不再创建(alloc,init)它。
如果您保留参考并重复使用,请确保一次只显示一次。 例如。你不应该让你的应用程序(代表)出现控制器A,它出现控制器B,它会再次出现B的C。如果你想这样做那么你应该在C中创建一个B的第二个实例并呈现这个B2。
(您可以在其他地方再次显示一个视图,使其从旧位置移动到新位置,但您不应在视图层次结构中的视图控制器中执行此操作 - 无论您是否存在或推送它们。)