我有一个 View ,它是处理广告的 UIViewController
(root) 和一个 UINavigationController
。在那个 UINavigationController 中,我有典型的 Controller 层。在我的自定义设置 TableView Controller 中,我有一个按钮可以联系我以获得支持。当用户单击此按钮时,我创建了一个 MFMailComposeViewController
并想展示它。我无法从设置 TableView 中显示它,因为它将位于我的广告下方,因此我需要引用 Root View 并从那里显示它。我试过 self.parentViewController.parentViewController
其中 self 是设置 TableView ,但这不起作用。我应该如何引用这个。必须直接引用 Root View 并将其传递给设置 View 似乎是一个糟糕的设计。
最佳答案
获取当前的keyWindow:
UIWindow *window = [UIApplication sharedApplication].keyWindow;
获取它的 rootViewController:
UIViewController *rootViewController = window.rootViewController;
注意:如果当前正在显示 UIAlertView
,则会创建一个新窗口并将其指定为 keyWindow。可能还有其他异常(exception)情况不会让您的应用程序窗口成为 keyWindow。
关于iphone - 如何找到根 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968703/