1

我已经尝试了我在谷歌和 StackOverflow 上阅读的所有内容,但这些建议似乎都不起作用。我已经坚持了2天试图修复它,但我希望你们能帮助我并提出一些我没有尝试过的东西......

这是我尝试过但似乎没有奏效的方法:

  • 重启mac
  • 重启 Xcode
  • 重启模拟器
  • 从模拟器中删除应用程序
  • 干净的项目然后构建然后运行
  • 更改情节提要名称(我将其从 ViewController 更改为 ViewController1 ,如您所见,我仍然收到错误消息
  • 确保其中包含 ViewController1 的所有代码拼写正确且区分大小写
  • 确保在构建阶段将故事板添加到复制包
  • 从构建阶段将其删除并重新添加
  • 确保故事板没有本地化,反之亦然
  • 确保项目已添加到文件检查器中的情节提要目标中
  • 我尝试禁用和启用自动布局都不起作用

这些似乎都不起作用我仍然在下面收到此错误,它不会在模拟器上加载我的应用程序它只是停在黑色加载屏幕上

**2013-08-27 12:07:15.057 Project52[647:11303] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/Deondrae/Library/Application Support/iPhone Simulator/6.1/Applications/A350F56C-CC1C-462A-8D7C-63F2CB037EBC/Project52.app> (loaded)' with name 'ViewController1''
*** First throw call stack:
(0x159b012 0x12a8e7e 0x159adeb 0x408ef9 0x2cd7e7 0x2cddc8 0x2cdff8 0x2ce232 0x21d3d5 0x21d76f 0x21d905 0x226917 0x2bb5 0x1ea157 0x1ea747 0x1eb94b 0x1fccb5 0x1fdbeb 0x1ef698 0x25fddf9 0x25fdad0 0x1510bf5 0x1510962 0x1541bb6 0x1540f44 0x1540e1b 0x1eb17a 0x1ecffc 0x56ad 0x28d5)
libc++abi.dylib: terminate called throwing an exception
(lldb)** 

我怀疑这个错误是由于下面的代码引起的......代码看起来加载一个xib但这是xcode 4.6所以我们使用故事板......我可以更改代码以尝试使其工作/加载故事板而不是过时的xib?

#import "AppDelegate.h"
#import "ViewController.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

更新:这是我现在在我的 appdelegate.m 中拥有的(在尝试了建议之后),但我仍然收到错误:

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

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[UIStoryboard storyboardWithName:@"ViewController1"  bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController1"];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

更新2:我仍然收到错误('NSInvalidArgumentException',原因:'找不到名为'ViewController1'的情节提要)

  • 我的故事板文件名是storyboard.storyboard
  • 我在该故事板中只有一个视图控制器。
  • 其中的视图控制器有一个自定义类 ViewController1

这就是我在 appdelegate.h 中的内容

#import <UIKit/UIKit.h>

@class ViewController1;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (nonatomic) UIViewController *viewController;
@property (nonatomic) UINavigationController *navigationController;
@property (nonatomic) UIStoryboard* storyboard;
@property (strong, nonatomic) UIWindow *window;

@end

这就是我在 appdelegate.m 中的内容

#import "AppDelegate.h"
#import "ViewController.h"

@implementation AppDelegate

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

    self.storyboard = [UIStoryboard storyboardWithName:@"storyboard" bundle:nil];
    self.viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController1"];
    self.navigationController  = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setRootViewController:self.viewController];
    [self.window addSubview:self.navigationController.view];
    [self.window makeKeyAndVisible];
}

更新 3:

使用 appdelegate.h 和 .m 文件中的注释中的 @calinchitu 代码似乎已经摆脱了错误......但是现在我在他在 .m 文件中提供的代码上关闭括号后特别收到警告,上面写着“警告:控制到达非无效函数的结尾”唯一跳过它的方法是启用断点,但警告仍然显示......我该如何摆脱这个?

更新 4:

添加返回YES;在@calin Chitu 在评论中提供的代码末尾,它应该消除警告。他的答案是正确的并且工作正常,但我没有足够的分数来标记答案,所以遇到此错误的其他人使用他的代码/建议它有效 - 不要忘记返回是;

4

2 回答 2

1

如果你想从 appdelegate 启动你的故事板:

在 appdelegate.h

@property (nonatomic) UIViewController *viewController;
@property (nonatomic) UINavigationController *navigationController;
@property (nonatomic) UIStoryboard* storyboard;
@property (strong, nonatomic) UIWindow *window;

在 appdelegate.m

self.storyboard = [UIStoryboard storyboardWithName:@"yourstoryboardname" bundle:nil];
self.viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController1"];
self.navigationController  = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:self.viewController];
[self.window addSubview:self.navigationController.view];
[self.window makeKeyAndVisible];

确保在情节提要中将 StoryboardId 设置为视图控制器的 ViewController1。

您也可以跳过上面的整个代码,转到您的项目设置、摘要并使用您创建的故事板设置主故事板。

于 2013-08-27T11:34:50.093 回答
1

您可能对使用故事板和使用单独的 nib 文件感到困惑。你有一个 ViewController1.xib 吗?正如您所说的将故事板包含到边界中时,我假设 ViewController1 是您(或您的一个)故事板的一部分。如果是这样,那就去:

[self.storyboard instantiateViewControllerWithIdentifier:@"ViewController1"];

当您在应用程序委托中而不是在视图控制器中时,请使用:

self.viewController = [[UIStoryboard storyboardWithName:@"yourstoryboardname"  bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController1"];
于 2013-08-27T11:38:40.537 回答