2014-10-02 48 views
1

此代码自iOS 4以来一直运行良好。我正在执行位于主视图控制器下方的首选项UITableViewController。当按下prefs按钮时,主视图向左滑动,显示prefs表视图。很简单。在子视图上呈现UIAlertController导致iOS 8中的窗口层次结构警告

其中一个首选项提出了UIActionSheet。问题是,在iOS 8中,UIActionSheet已弃用。好的,所以简单的事情就是转移到UIAlertController。那么,问题是,当我点击那个是应该弹出UIAlertController行,我得到这个:

Warning: Attempt to present <UIAlertController: 0x7cab8bf0> on <PrefsTableController: 0x7be5c5b0> whose view is not in the window hierarchy! 

这并不在iOS 6中或iOS 7

的代码的地方发生该偏好vc是:

[self.window insertSubview:prefsTableController.view belowSubview:viewController.view]; 

没什么,它的效果很好。问题是,我不明白为什么视图现在被认为是在iOS 8中被分离,当我明确地将它放置在视图层次结构中。

呈现的UIAlertContoller的代码是:

[self presentViewController:view animated:YES completion:nil]; 

所以,我在一个总损失就在这里。如果我明确地将视图B放在视图A下,为什么我被告知视图B不在视图层次中?

谢谢。

+0

什么是'self'在'[self presentViewController:view animated:YES completion:nil];' – Kamchatka 2014-10-02 18:59:02

+0

底部首选项视图控制器。 – 2014-10-02 18:59:45

+0

我使用了Xcode 6 3D窗口层次结构显示视图,它实际上位于正确的位置。 – 2014-10-02 19:22:36

回答

0

您需要将prefsTableController(而不仅仅是其视图)添加到层次结构中。

编辑:一种选择是你设置你的UITableViewController作为自定义容器视图控制器的孩子,然后,当你准备好展示的喜好,添加prefsViewController作为同一容器(细节here)的另一个孩子。

相关问题