应用程序在应用程序启动结束时应具有根视图控制器

kaut 发布于 2018-12-03 ios 最后更新 2018-12-03 20:28 110 浏览

我的控制台中出现以下错误:

Applications are expected to have a root view controller at the end of application launch
以下是我的application:didFinishLaunchWithOptions方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Set Background Color/Pattern
    self.window.backgroundColor = [UIColor blackColor];
    self.tabBarController.tabBar.backgroundColor = [UIColor clearColor];
    //self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"testbg.png"]];
// Set StatusBar Color
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
// Add the tab bar controller's current view as a subview of the window
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}
在Interface Builder中,UITabBarController的委托被连接到App Delegate。 任何人都知道如何解决这个问题?
已邀请:

cvitae

赞同来自:

确保为第一个场景正确设置了“是初始视图控制器”.enter image description here 这就是导致错误的原因。

datque

赞同来自:

就我而言,关于实际窗口和didFinishLaunchingWithOptions:方法的一切都很好。 我的错误是我没有意识到applicationDidBecomeActive:在启动时运行,此外还有应用程序在后台运行后进入前台。 因此,在applicationDidBecomeActive:中,我正在操作尚未完成所有设置的视图控制器(等待不同的线程响应等)。 一旦我将此功能移到applicationDidBecomeActive之外,错误便消失了。

fet

赞同来自:

我正在将旧的EAGLView示例项目迁移到Xcode 4中的新GLKView示例项目,并且没有一个解决方案适合我。最后我意识到我正在尝试将主GLKViewController的self.view设置为指向Interface Builder中的嵌套GLKView。 当我将self.view指向Interface Builder中的根GLKView时,我的应用程序可以在没有错误消息的情况下启动(因此请确保您的视图控制器的视图设置为根视图)。 附:如果要使嵌套的GLKView工作,请在ViewController.h中创建一个新的成员变量,如self.glkSubview,并将其连接拖到Interface Builder中的嵌套GLKView中。然后确保将self.glkSubview的委托拖到File的所有者。您必须在“ - (void)glkView:(GLKView *)视图drawInRect:(CGRect)rect”中手动调用[self.glkSubview display],如果您已为GLKView关闭setNeedsDisplay。

nnihil

赞同来自:

我收到此错误(Applications are expected to have a root view controller at the end of application launch),我正在以编程方式创建视图控制器。 通过确保我的根视图控制器中的loadView方法调用[super loadView]来解决此问题。

uaut

赞同来自:

在使用ios5 sdk构建项目时,我最近遇到了同样的问题。 起初它正在构建并正常运行,但在此之后出现了错误。
就我而言,解决方案相当简单。
缺少的是,我的应用程序目标的摘要选项卡中的主界面属性被删除了。所以我需要再次设置它。
如果这不是重点,并且tabBarController仍然是nil,则可以始终以编程方式创建窗口和根控制器。 作为后备,我将以下代码添加到我的项目中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ 
    if (!window && !navigationController) {
        NSLog(@"Window and navigation controller not loaded from nib. Will be created programatically.");
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        UIViewController *viewController1, *viewController2;
        viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
        viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
        self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
        self.window.rootViewController = self.tabBarController;
}
    else {
        [window addSubview:[tabBarController view]];
    }
    [self.window makeKeyAndVisible];
    return YES;
}
只有在实施了sho的解决方案时,这才有效。

trerum

赞同来自:

尝试将标签栏控制器的IBOutlet连接到Interface Builder中的根视图而不是

self.window.rootViewController = self.tabBarController;
但实际上我之前没有见过这样的错误。

mut

赞同来自:

我有同样的问题。检查你的main.m.最后一个参数应设置为实现UIApplicationDelegate协议的类的名称。

retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");

cvitae

赞同来自:

如果您使用MTStatusBarOverlay,那么您将收到此错误。 MTStatusBarOverlay创建了一个没有根控制器的附加窗口([[UIApplication sharedApplication]窗口)。 这似乎不会导致问题。

dipsam

赞同来自:

我的第一个视图是MenuViewController,我添加了:

MenuViewController *menuViewController = [[MenuViewController alloc]init];
self.window.rootViewController = menuViewController;
在App Delegate方法上:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
}
那很有效。

quo_et

赞同来自:

尝试更改加载的第一个视图控制器时,我遇到了同样的错误 - (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions 起初我并不是真的知道错误来自哪里,所以我把它缩小了,发现出了什么问题。事实证明,我试图在视频实际显示在屏幕之前更改视图的显示。因此解决方案是在viewcontroller中移动此代码,这给我带来了麻烦 - (void)viewDidLoad- (void)viewDidAppear:(BOOL)animated 并且错误停止出现。我的问题具体是由UIAlertView节目引起的。 在你的情况下,我建议你查看tabBarController的活动视图控制器中的代码(因为它可能是该视图控制器中的一个问题)。 如果这不起作用,请尝试在nib文件中而不是在代码中设置起始设置 - 或者如果要在代码中执行此操作,请尝试将代码移动到tabBarController的活动viewcontroller的相应方法。 祝你好运!

trerum

赞同来自:

以上建议都没有解决我的问题。我是这样的: 加:

window.rootViewController = navigationController;
后:
[window addSubview:navigationController.view];
在我的appdelegate中
- (void)applicationDidFinishLaunching:(UIApplication *)application {

icum

赞同来自:

如何为iOS5添加RootViewController 如果你的应用程序到现在为止没有使用RootViewController, 只需创建一个;)按文件>新建>新建文件; 选择UIViewController subclass 将其命名为RootViewController,取消选中With XIB for user interface(假设您已有) 并将此代码放在AppDelegate :: didFinishLaunchingWithOptions中

rootViewController = [[RootViewController alloc] init];
window.rootViewController = rootViewController;
当然 - 你必须导入RootViewController.h并创建变量 关于RootViewController和AppDelegate的here is a nice article

zsed

赞同来自:

对于ARC更改: 改成

@synthesize window;
代替
@synthesize window=_window;

zipsum

赞同来自:

虽然很多这些答案似乎都是有效的,但没有一个能为我修复这些信息。我正在尝试使用空的应用程序模板并尝试直接加载到.xib文件以便了解(例如旧窗口模板)。似乎Apple留下了运行的NSLog消息。 我在Xcode 4.3上,似乎没有任何东西摆脱这个消息,我想知道为什么。最后我决定看看在Xcode 4.5(预览/ iPhone 6.0版本)中会发生什么,并且消息不再存在。继续。

cnisi

赞同来自:

我也有这个问题。事实证明,当我从左侧的Objects列表中删除App Delegate时,我删除了App Delegate,Window和TabBarController的连接:)

psequi

赞同来自:

我从“空应用程序”模板开始然后手动添加XIB时得到了这个。我通过设置Sunny建议的主Nib名称来解决它。此方案中缺少的步骤是删除

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
因为它会覆盖在Xib文件中创建的窗口实例。这假设您已经创建了一个ViewController,并将其与您的窗口和App Delegate连接在XIB文件中。

nquae

赞同来自:

我在日志中有相同的错误消息。我在应用程序中弹出了UIAlertView:didFinishLaunchingWithOptions。我通过延迟对alertView的调用来解决它,以便让根视图控制器有时间完成加载。 在应用程序中:didFinishLaunchingWithOptions:

[self performSelector:@selector(callPopUp) withObject:nil afterDelay:1.0];
1秒钟后调用:
- (void)callPopUp
{
    // call UIAlertView
}

zomnis

赞同来自:

如果您的应用程序使用FingerTipWindow替换主UIWindow(以显示投影仪上的触摸)并且您没有更新源几年(几年),则替换对象可能不包含rootViewController属性(请参阅kgn的5/21/2013 mod在GitHub) 您可以在didFinishLaunchingWithOptions中设置window.rootViewController直到奶牛回家,但您的窗口将不会报告“在应用程序启动结束时”,并且会在运行时抛出异常。更新您的来源。

wodio

赞同来自:

验证您的STORYBOARD文件...如果您使用IB将代码'连接'到您的UI ...并且恰好删除了UI元素...然后意识到,哦,您需要删除代码中的引用(在我的案例一个名为AbortButton的UIButton)...然后片刻之后应用程序将无法启动... 问题出在“故事板”文件中。在xml编辑器中打开它,寻找孤立的“关系”,连接器指向它们不应该放置的位置...... 例如: <关系>     < relationship kind =“outlet”name =“AbortButton”candidateClass =“UIButton”/> 在我的代码中不再存在...(但我仍然在故事板文件中链接了'连接器').. 我也有(从UIImageView或工具栏到我的主要UIViewController.view对象的某种方式和无效的连接器)...不要认为它喜欢... 底线 - 一个人不必手动'编码控制器'回存... STORYBOARD文件被打乱了。我修好了,宾果游戏再次完美。 和BTW一样,作为一个文本编码器..我越来越喜欢IB ...在MS Visual Studio的IDE上踢屁...

tquod

赞同来自:

在“笑”答案之上,这是正确的(UIApplicationMain的第四个参数应该是主控制器的名称),我添加一些注释。 我最近改变了我的应用程序的'模型',使用MainWindow.xib以编程方式构建窗口。该应用程序使用较旧的模板自动创建MainWindow。由于我想支持iPhone 5的不同控制器视图XIB,因此在创建App Delegate时以编程方式选择正确的XIB更容易。我也从项目中删除了MainWindow.xib。 问题是,我忘了填写UIApplication main中的第四个参数,我忘记从项目摘要中的“主界面”中删除MainWindow。 这引起了一个大问题:它在开发设备上呈现了无害的警告“应用程序预计......”,但是当它进入App Store时,它在用户手机上崩溃,因为MainWindow不再在捆绑中而崩溃!我不得不要求加快对错误修复的审查。 另一个问题是,当设置被更改并且应用程序被置于前台时,有时会出现像空白UIView一样的白色块。在iPhone 5中很明显它是一个320x480块。也许缺少的MainWindow是在开发模式下使用旧的大小创建的。当崩溃的第一个报告到达收件箱时,我刚刚发现了这个错误。 从App Store而不是从XCode安装应用程序表明该应用确实崩溃了,并且MainWindow问题在日志中显示出来,所以我可以看到它不是设备+ IOS版本的一些特殊组合。

pdolor

赞同来自:

以上都没有为我工作...在我的appDelegate上发现我的init方法有问题。如果要实现init方法,请确保正确执行 我有这个:

- (id)init {
    if (!self) {
        self = [super init];
        sharedInstance = self;
    }
    return sharedInstance;
}
并改为:
- (id)init {
    if (!self) {
        self = [super init];
    }
    sharedInstance = self;
    return sharedInstance;
}
其中“sharedInstance”是指向我的appDelegate单例的指针

out

赞同来自:

您是否尝试过设置代理,即

self.rootController.delegate = self;
在applicationDidFinishLaunchingWithOptions中?这对我有用,虽然我不知道为什么。

hvelit

赞同来自:

我升级到iOS9并开始无处可寻。我能够解决它,但将以下代码添加到- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions

NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow *window in windows) {
    if(window.rootViewController == nil){
        UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
        window.rootViewController = vc;
    }
}

yquo

赞同来自:

这个错误突然袭击了我。那是什么造成的呢? 事实证明我在IB附加文件所有者到一个新的小ImageView我拖到了视图上。我没有在.h文件中将其称为IBOutlet,因此当我按住Ctrl键拖动它时,新的Imageview未被列为可能的连接。小黑框中显示的唯一可能是View。我必须在不经意间点击。我做了一些更改然后运行程序并得到根控制器错误。修复程序将文件所有者重新连接到xib-IB屏幕中的底部视图。

yeum

赞同来自:

iOS 5.0左右有一个小小的变化,要求你有一个根视图控制器。如果您的代码基于较旧的示例代码(例如GLES2Sample),则不会在这些代码示例中创建根视图控制器。 要修复(例如GLES2Sample),在applicationDidFinishLaunching中,我创建一个根视图控制器并将我的glView附加到它。

- (void) applicationDidFinishLaunching:(UIApplication *)application
{
  // To make the 'Application windows are expected
  // to have a root view controller
  // at the end of application launch' warning go away,
  // you should have a rootviewcontroller,
  // but this app doesn't have one at all.
  window.rootViewController = [[UIViewController alloc] init];  // MAKE ONE
  window.rootViewController.view = glView; // MUST SET THIS UP OTHERWISE
  // THE ROOTVIEWCONTROLLER SEEMS TO INTERCEPT TOUCH EVENTS
}
这会使警告消失,并且不会影响您的应用程序。

iaut

赞同来自:

答案都没有解决我的问题。 我正在开发一个升级到ARC的旧iOS4项目,现在正在使用Xcode 5 for iOS 7 我仔细阅读了所有这些内容并开始检查我的配置和代码。 为我修复的是添加

-(BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions
{
    // Maybe do something
    return YES;
}
除了拥有
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
}
我没有
-(BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions
在收到错误之前。

trerum

赞同来自:

这发生在我身上,因为我无意中评论说:

[self.window makeKeyAndVisible];
- (BOOL)application:(UIApplication*) didFinishLaunchingWithOptions:(NSDictionary*)

tfugit

赞同来自:

这个Swift 2解决方案对我有用: 在AppDelegate中插入以下代码 - > didFinishLaunchingWithOptions

self.window!.rootViewController = storyboard.instantiateViewControllerWithIdentifier("YourRootViewController") as? YourRootViewControllerClass

umodi

赞同来自:

OrdoDei给出了正确而有价值的答案。我添加这个答案只是为了给出一个didFinishLaunchingWithOptions方法的例子,该方法使用他的答案以及其他人对导航控制器的评论。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
// Instantiate the main menu view controller (UITableView with menu items).
    // Pass that view controller to the nav controller as the root of the nav stack.
    // This nav stack drives our *entire* app.
    UIViewController *viewController = [[XMMainMenuTableViewController alloc] init];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
// Instantiate the app's window. Then get the nav controller's view into that window, and onto the screen.
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // [self.window addSubview:self.navigationController.view];
    // The disabled line above was replaced by line below. Fixed Apple's complaint in log: Application windows are expected to have a root view controller at the end of application launch
    [self.window setRootViewController:self.navigationController];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

iaut

赞同来自:

当MainWindow.xib的文件所有者设置不正确时,也会显示此错误。 文件的所有者是UIApplication
- >插入了app delegate类的对象,窗口连接到窗口

equia

赞同来自:

我有同样的问题。如果您像我一样“从头开始”构建基于窗口的应用程序,则需要执行以下操作:(注意,这些是Xcode 4.2的步骤。) 0.确保您的应用程序委托符合UIApplicationDelegate协议。 例如,假设我们的委托名为MyAppDelegate。在MyAppDelegate.h中,我们应该有这样的东西:

@interface MyAppDelegate : 
    NSObject <UIApplicationDelegate> // etc...
1.在main.m中指定应用程序委托 例如,
#import "MyAppDelegate.h"
int main(int argc, char *argv[])
{
  @autoreleasepool {
    return UIApplicationMain(argc, argv,
      nil, NSStringFromClass([MyAppDelegate class]));
  }
}
2.创建主窗口界面文件。 为此,右键单击项目并选择“新建文件”。从那里,从iOS - >用户界面部分选择窗口。 将文件添加到项目后,转到项目摘要(左键单击项目;单击摘要。)在iPhone / iPod部署信息下(如果您愿意,还可以选择相应的iPad部分)并在“”中选择新的接口文件主界面“组合框。 3.在界面编辑器中将其全部搞定 在文件列表中选择您的接口文件以打开界面编辑器。 确保“实用工具”窗格已打开。 通过将“实用程序”窗格中“对象”列表中的“对象”拖动到“窗口”对象下方的上方空间来添加新对象。选择对象。单击“实用工具”窗格中的“标识”检查器。将Class更改为应用程序的委托(在此示例中为MyAppDelegate。) 打开MyAppDelegate的连接检查器。将窗口连接到接口文件中已存在的窗口。 单击左侧的文件所有者,然后单击“实用工具”窗格中的“标识”检查器。将班级更改为UIApplication 打开文件所有者的连接检查器。将代理插座连接到MyAppDelegate对象。 4.最后,非常重要的是,单击界面文件中的Window对象。打开“属性”检查器。确保选中“在启动时可见”。 这就是我必须做的才能让它为我工作。祝你好运!

csequi

赞同来自:

在AppDelegate中替换

 [window addSubview:[someController view]];
  [self.window setRootViewController:someController];

killo

赞同来自:

我有相同的错误消息,因为我在其中调用了警报

- (void)applicationDidBecomeActive:(UIApplication *)application 
代替
- (void)applicationWillEnterForeground:(UIApplication *)application

pullam

赞同来自:

我遇到了同样的问题,但我使用的是storyboard 将我的storyboard InitialViewController分配到我的窗口的rootViewController。 在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
...
UIStoryboard *stb = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:nil];
self.window.rootViewController = [stb instantiateInitialViewController];
return YES;
}
这解决了这个问题。

ut_et

赞同来自:

我在升级到Xcode 4.3后立即开始遇到同样的问题,并且只在从头开始创建一个项目时(即创建一个空项目,然后创建一个UIViewController,然后创建一个单独的nib文件)。 把我以前的所有行放在一起,并确保我有正确的连接后,我不断收到错误,我试图通过视图控制器(设置为rootController)加载的nib文件从未在模拟器中显示。 我通过Xcode创建了一个单独的视图模板,并将其与我的代码进行了比较,最后发现了问题! Xcode 4.3似乎默认添加方法 - (void)loadView;到视图控制器实现部分。仔细阅读其中的评论后,问题就变得清晰了。如果以编程方式创建视图(并且我正在解释),则注释指示覆盖loadView方法,否则如果使用nib则不覆盖loadView。这个方法里面没有别的东西,所以在影响中我覆盖了方法(并且什么都不做)WHILE使用了一个nib文件,它给出了错误。 解决方案是从实现部分中完全删除loadView方法,或者通过添加[super loadView]来调用父方法。 删除它最好是使用NIB文件,因为添加任何其他代码实际上会覆盖它。

wsed

赞同来自:

确保在应用程序委托中具有此功能。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions {
   return YES;
}
确保didFinishLaunchingWithOptions返回YES。如果您碰巧删除了“返回YES”行,则会导致错误。故事板用户可能特别常见此错误。

jdolor

赞同来自:

这发生在我身上。通过编辑.plist文件解决。 指定主nib文件基名。(应为MainWindow.xib)。 希望这会有所帮助。

enter image description here

lnulla

赞同来自:

将PLACEHOLDER_FOR_CODE_从didFinishLaunchingWithOptions:移至awakeFromNib:解决了这个问题。

set

赞同来自:

听起来像self.tabBarController正在返回niltabBarController可能未在Interface Builder中连线。将tabBarControllerIBOutlet设置为Interface Builder中的tabBarController

yeum

赞同来自:

我能够在xcode的摘要屏幕上设置初始视图控制器。 单击左侧文件资源管理器中最顶层的项目名称(它应该有一个小蓝图图标)。在中间列中,单击“TARGETS”下的项目名称,(它旁边应该有一个小铅笔'A'图标)。查看“iPhone / iPod部署信息”并查找“主界面”。您应该可以从下拉列表中选择一个选项。

dodit

赞同来自:

要添加到Mike Flynn的答案,自从升级到Xcode 7并在iOS 9设备上运行我的应用程序后,我将其添加到了我的(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions

// Hide any window that isn't the main window
NSArray *windows = [[UIApplication sharedApplication] windows];
for (UIWindow *window in windows) {
    if (window != self.window) {
        window.hidden = YES;
    }
}

eos_et

赞同来自:

  • 在Nib文件中选择“窗口”
  • 在“属性检查器”中选中“在启动时可见”
image![]
  • 手动创建nib文件时会发生这种情况。
  • 此修复适用于常规笔尖模式 - 而非故事板模式

id_aut

赞同来自:

我也有这个错误,但不同于之前列出的任何答案我的是因为我在我新生成的控制器(xcode 4.2,ios5)中取消了方法'loadView'。

 //Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView  
{
}
它甚至告诉我,该方法是以编程方式创建视图但我错过了它,因为它看起来非常类似于我通常使用的其他方法,我没有抓住它。 如果您不是以编程方式创建视图层次结构(即使用nib或storyboard),则只需删除该方法。

et_ea

赞同来自:

我也遇到了这个错误,但是已经列出的答案没有解决我的问题。 在我的情况下,日志显示是由于我在另一个子线程中分配应用程序根视图控制器的事实。

-(BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions:(NSDictionary*) launchOptions
{
    ...
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue, ^{
        ...
        dispatch_async(dispatch_get_main_queue(), ^{
            ...
            [self updateTabBarTitles];
            self.window.rootViewController = self.tabBarController;
            ...
        });
    });
[self.window makeKeyAndVisible];
    return YES;
}
通过将rootViewController赋值移动到函数末尾 - 就在调用makeKeyAndVisible之前: - 导致日志消息不再显示。
{
    ...
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}
我希望这有帮助。

nsit

赞同来自:

我在Xcode 4.5.1中针对iOS 5.1的iPad应用程序中遇到了这个问题。该应用程序使用UITabBarController。我在标签栏控制器中需要一个新的部分,所以我创建了一个新的视图控制器和xib。一旦我将新的视图控制器添加到标签栏控制器,我的屏幕控制都不再有效,我得到了“预期有一个根视图控制器”日志。 不知何故,新xib中的顶级对象是UIWindow而不是UIView。当我将UIView放入XIB时,让视图出口指向它,将所有子视图移动到新的UIView中,并删除UIWindow实例,问题得到修复。

nut

赞同来自:

如果没有正确设置Interface Builder,就会出现此问题。 确保您的App Delegate的窗口和viewController插座连接起来: 在MainWindow.xib中,按住control,单击App Delegate并拖动到Window对象。选择窗口。保持控制并再次选择App委托,拖动到根视图控制器并选择viewController。

uvero

赞同来自:

我通过执行以下操作解决了这个问题(以上其他解决方案都没有帮助): 从与“主界面”关联的下拉菜单中选择另一个条目,然后重新选择“MainWindow”,然后重建。

enter image description here

walias

赞同来自:

我也遇到了这个问题。我让我的项目在xcode4.2.1中运行。我已经阅读了那里的所有评论,但没有人对我很酷。过了一会儿,我发现我评论了一段代码。

//self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
然后我取消评论它。一切都对我好。 希望这对你们有帮助。

dquia

赞同来自:

使用XCode 4.6.3和iOS 6.1将故事板替换为UI后收到相同的错误 通过清除AppDelegate中didFinishLaucnhingWithOptions的所有代码解决了这个问题

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    return YES;
}

要回复问题请先登录注册