在 iOS 6 上显示的视图消失了。我该如何解决?

Posted

技术标签:

【中文标题】在 iOS 6 上显示的视图消失了。我该如何解决?【英文标题】:Presented views on iOS 6 disappear. How do I fix this? 【发布时间】:2013-02-08 16:30:46 【问题描述】:

我有两个从视图控制器呈现的视图:一个用于设置,一个用于设备日志。当我在 iPad 上运行应用程序并呈现视图,然后旋转设备时,视图消失了。

如果我以纵向(任一)呈现视图(使用按钮)并旋转它,它就会消失。如果我再次呈现视图,它会重新出现,然后正确旋转。

为什么会这样?我能做些什么来解决它?

感谢您的回复。

更新:仅当我第一次以纵向模式呈现视图时才会发生这种情况。如果我先以横向模式呈现它,它会很好地旋转并且不会消失。

在我的主视图控制器的 viewDidLoad 中:

self.logViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LogViewController"];
[self.logViewController setModalInPopover:YES];
[self.logViewController setModalPresentationStyle:UIModalPresentationFormSheet];
[self.logViewController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];

按下 Log 按钮时调用的方法:

- (void)showInfoView:(id)sender

    [self presentViewController:self.logViewController animated:YES completion:NULL];

【问题讨论】:

有人(我认为他们删除了他们的评论?)说我应该在我呈现的视图控制器的属性上设置strong 属性。我有,但我不认为呈现的视图控制器应该始终是一个属性。 在 IB 中你几乎不应该有指向视图的强指针。 这是为什么呢?视图的访问频率很高,因为它是一种交流工具。 这是因为您的视图已经有了指向它们的强指针。您的 ViewController 不关心它们,如果视图这样做(因为视图拥有它们)。一旦视图释放它们,您不希望 ViewController 再拥有与它们的任何连接......因此需要来自您的 VC 的弱指针。如果您使用的是 Outlet Collection,那么您需要一个强指针(但只是因为它实际上是一个 NSArray)。 我们谈论的是视图还是视图控制器?我没有指向视图的强指针,只有特定的视图控制器。 【参考方案1】:

我已经意识到我做错了什么。我在 SplitViewController 中从我的主视图中呈现呈现的视图控制器。通过从详细视图中呈现它,问题就解决了。

【讨论】:

以上是关于在 iOS 6 上显示的视图消失了。我该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

禁用转场动画

如何在 iOS 8 上显示没有按钮的 UIAlertView?

带有约束的 iOS 6.0 AutoLayout 问题:旋转时子视图消失

未显示可扩展列表视图活动。我该如何解决。?

在列表视图中显示或隐藏对象

iOS 如何控制 UIContainer View 的显示和消失?