iphone - 如何找到根 UIViewController

标签 iphone objective-c ios ipad

我有一个 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/

相关文章:

iphone - 带参数的 UIBarButtonItem 操作

objective-c - 我们如何将 double 或 float 重新解释为 NSUInteger 来创建哈希?

iphone - 如何使 UINavigationItem backBarButtonItem 矩形?

ios - 如何在ios sdk中更改应用程序内的应用程序语言

iphone - 帮助着色由图像蒙版/边界定义的图层并将图像覆盖在顶部

iphone - 使用 BJImageCropper 在 iOS 中裁剪图像

android - 在 iOS 上获取购买和订阅信息

ios - UI 按钮图像粘贴 iOS 6

iphone - TabbarController 在 3.0 中崩溃

objective-c - 将按钮添加到 OSX 锁定屏幕