iphone - “由于未捕获的异常而终止应用程序”..它找不到不再存在的主窗口

标签 iphone objective-c xcode

我不久前删除了所有 .xib 文件,并且最近更改了我的标识符。现在它开始给我这个错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle (loaded)' with name 'MainWindow''

MainWindow 不久前被删除,从部署信息中删除 MainWindow 意味着我只会看到黑屏。这是我的应用程序委托(delegate)中的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    [application setStatusBarStyle:UIStatusBarStyleBlackOpaque];
    [window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

我错过了什么吗?我想我应该删除 MainWindow,但正如我所说,这只是给我一个黑屏。

最佳答案

您收到此错误是因为 NSMainNibFile 值是在 Info.plist 中设置的。它告诉操作系统在启动时打开该 NIB 文件。由于您出于某种原因取消了 NIB,因此您必须通过删除 NIB 文件来填补您所创建的漏洞。

  1. 您必须从 Info.plist 中删除该 key 。
  2. 您必须在 main.m 中进行一些更改。通常,MainWindow.xib 包含有关应用程序委托(delegate)的信息,但现在您需要提供它。找到 int retVal = UIApplicationMain(argc, argv, nil, nil); 行并将其替换为 int retVal = UIApplicationMain(argc, argv, nil, @"yourDelegateClassName");

  3. 到目前为止您所做的操作将实例化应用程序委托(delegate),并且您的 application:didFinishLaunchingWithOptions: 将被调用,但您的 window 尚未设置为它再次由 NIB 文件处理。这将适用于您的所有网点。不仅仅是您的“窗口”。

您必须像这样对 application:didFinishLaunchingWithOptions: 方法进行一些添加,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Instantiate Window
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    // Instantiate Root view controller
    RootViewController * viewController = [[[RootViewController alloc] init] autorelease];

    // Instantiate navigation controller
    navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

    [application setStatusBarStyle:UIStatusBarStyleBlackOpaque];
    [window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

以上方法只是一个模板,必须根据您的要求进行修改。

关于iphone - “由于未捕获的异常而终止应用程序”..它找不到不再存在的主窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386019/

相关文章:

iOs模拟器运行缓慢

iphone - 如何基于现有类文件创建新类文件 - 在 Xcode 中

objective-c - 接收者类型 'WebFrame' 例如消息是前向声明

objective-c - UITextView 中的光标位置

ios - XCode 系统配置和无法访问 ios 键盘

ios - NSDateComponents 的 NSLog 分秒 - 如何显示前导零?

c++ - Mac - C++ - 创建 file.exe

iphone - 从 iphone 应用程序将照片保存到 AWS S3

ios - 我不确定如何将 RSS 提要中的图像添加到我的 UITableView 中

iphone - 多个 iAd 与一个 View Controller ?