8

我有这个问题,但是我在这个论坛或一般互联网上找不到的信息似乎都无法帮助我。

似乎有两个地方可能会出现此错误:

  1. main.m - 我的函数如下所示:
  int main(int argc, char *argv[])
    {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }

最后一个参数UIApplicationMain返回NSStringmy 类的值AppDelegate。因此,这工作正常。

2.AppDelegate.m - 有一种“旧”的方式来设置根视图控制器,如下所示:

  [self.window addSubview:rootViewController];

但是,在我的应用程序中,它已经更新为:

self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

因此,互联网上的当前信息均无效。这有点令人费解,因为我的同事可以让它在他的计算机上完美运行 - 他是向我发送应用程序源代码的人,因此所有设置和代码应该完全相同。

我正在尝试在模拟器中启动它。它是针对 iOS 5 构建的,但我试图在 iOS 6.0 模拟器上运行它。

我有最新的 XCode (4.5.1)。

有什么理由会发生这种情况吗?我该如何纠正它?

非常感谢

汤姆

4

4 回答 4

17

我在尝试将 UITableView 添加到单视图应用程序时遇到了完全相同的事情。相反,创建一个默认的 Master-Detail Application 项目(file->new->target->...)并查看 AppDelegate 的 didFinishLaunchingWithOptions 实现:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

MDMasterViewController *masterViewController = [[MDMasterViewController alloc] initWithNibName:@"MDMasterViewController" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
}

与其直接将视图控制器设置为窗口的 rootViewController,不如为 initWithRootViewController 创建一个使用视图控制器初始化的导航控制器,然后将该导航控制器设置为窗口的 rootViewController。(请注意,您还必须将导航控制器隐藏在一个属性中,这样它就不会被破坏)。

于 2012-10-11T00:49:37.683 回答
6

只需更改此:

[window addSubview:tabBarController.view];

对此:

[window setRootViewController:tabBarController];

或者 addSubView 中的任何内容:

于 2013-10-09T04:43:53.120 回答
3

尝试在项目菜单中定义默认视图控制器,

选择您的项目 => 摘要 => 主界面 => 键入您的主视图控制器

每次我开始新项目时,我都会遇到与您相同的错误,每次都这样做解决了,希望这对您有所帮助。

于 2012-10-11T00:57:13.550 回答
0

执行以下操作,至少在您的代码上添加一个异常断点,看看您是否能找出问题所在。如果您不知道如何操作,请使用本教程。另外,编译时是否有任何警告?即使它让您编译,有时警告也可以揭示您的应用程序崩溃的原因。

于 2012-10-08T15:20:00.173 回答