视图控制器未从 App Delegate 呈现

Posted

技术标签:

【中文标题】视图控制器未从 App Delegate 呈现【英文标题】:View Controller not presenting from App Delegate 【发布时间】:2013-08-23 06:27:06 【问题描述】:

如果没有帐户登录,我正在尝试加载 viewController 但是它给了我这个错误Warning: Attempt to present <DefaultViewController: 0xb96cac0> on <MainViewController: 0xb95c320> whose view is not in the window hierarchy! 这是我现在使用的代码:

BOOL returnAllOff = [[User data] returnAllOff];

if (returnAllOff) 
    DefaultViewController *viewController =[[DefaultViewController alloc]
    init];
    UIViewController *presentingController = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
    [presentingController presentViewController:viewController animated:YES completion:nil];


【问题讨论】:

***.com/questions/13888062/… ***.com/questions/11862883/… 我尝试了第一个链接中的解决方案,但我遇到了同样的问题 代码在哪里?错误的原因很清楚。 我是否必须在 mainviewcontroller 类中添加 DefaultViewController。仅供参考,我正在使用故事板。 【参考方案1】:

其实这是从 AppDelegate 加载 ViewController 的正确方法..

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    DefaultViewController *viewController = [[DefaultViewController alloc] initWithNibName:@"DefaultViewController" bundle:nil];
    self.window.rootViewController = viewController;
    [self.window makeKeyAndVisible];

【讨论】:

它现在给出了这个问题...*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/Pradyumn/Library/Application Support/iPhone Simulator/6.1/Applications/84A3CAF1-D22C-48E6-96D2-42F0CA9DF1E6/Floadt.app> (loaded)' with name 'DefaultViewController'' 您正在使用情节提要? 我现在添加了该行,但是当视图加载时它全黑,即使有 2 个按钮并且页面充满了颜色。 @preetam【参考方案2】:

通过在 appDElegate 中导入 DefaultViewController 来试试这个。

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
DefaultViewController *viewController = [[DefaultViewController alloc] init];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];

【讨论】:

我现在添加了该行,但是当视图加载时它全黑,即使有 2 个按钮并且页面充满了颜色。 您要查看哪种颜色? 它实际上是一个 ui 图像视图 我认为您正在将视图背景颜色设置为清除视图中所有内容的默认颜色 尝试使用新的视图控制器...首先检查它是否导航,然后相应地对新的视图控制器进行所需的更改,以便您可以轻松跟踪错误的位置?

以上是关于视图控制器未从 App Delegate 呈现的主要内容,如果未能解决你的问题,请参考以下文章

使用 App Delegate 访问通过 Storyboard 创建的视图控制器

Cocoa:根据来自 App Delegate 的输入加载不同的视图控制器

如何从我的视图控制器引用我的 App Delegate 中的 managedObjectContext?

如何从app delegate访问NSViewController?

IOS 将值从 App Delegate 传递到初始视图控制器并在 viewWillAppear 中使用这些值

iOS 如何告诉 App Delegate 从当前视图呈现新视图