在 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?