在核心数据项目中加载视图控制器时出现问题

Posted

技术标签:

【中文标题】在核心数据项目中加载视图控制器时出现问题【英文标题】:Problem Loading View Controller in Core Data Project 【发布时间】:2011-04-20 18:08:30 【问题描述】:

我最近刚刚开始学习在 XCode 4 中使用核心数据,我在从核心数据项目中的应用委托加载我的第一个视图控制器时遇到了一个非常奇怪的问题。我真的不确定我做错了什么,只有当核心数据没有实现时我正在做的事情非常好,但当它实现时却不行。

我发现 appDelegate 将加载,然后它将开始加载视图控制器(我可以让它记录它通过 initWithNibName 方法)。但是随后视图控制器消失了,我看到的只是主窗口。错误日志中没有生成错误。

这是来自 appDelegate 的相关代码

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

    // other code here

    UINavigationController *navigationController = [[[UINavigationController alloc]  init] autorelease];

    HomeViewController *viewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
    viewController.title = @"My Company";
    [navigationController pushViewController:viewController animated:NO];

    [window addSubview:navigationController.view];

    [viewController release];

    [self.window makeKeyAndVisible];
    return YES;

视图控制器目前基本上只有存根数据,但我可以根据要求发布任何方法。提前感谢您的帮助。

更新:好吧,我终于可以自己工作了,尽管我不确定它为什么会起作用。我所做的只是将导航控制器作为应用程序委托的属性删除,并在 didFinishLaunchingWithOptions 方法中分配 init 自动释放它。之后它工作得很好。上面发布的代码最终奏效了。不过,奇怪的是,我在我正在从事的另一个项目中尝试了同样的事情,但在那个项目上却没有。

这是第二个项目的代码

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

    UINavigationController *navigationController = [[[UINavigationController alloc]  init] autorelease];
    StartViewController *viewController = [[StartViewController alloc] initWithNibName:@"StartViewController" bundle:nil];

    [navigationController setNavigationBarHidden:YES];
    [navigationController pushViewController:viewController animated:NO];

    [window addSubview:navigationController.view];
    [viewController release];

    [self.window makeKeyAndVisible];
    return YES;

【问题讨论】:

【参考方案1】:

尝试不同的方法:

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

  HomeViewController *viewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
  viewController.title = "My Company";
  [navigationController pushViewController:viewController animated:NO];

  [viewController release];

  [window addSubview:navigationController.view];
  [self.window makeKeyAndVisible];
  return YES;

【讨论】:

@Carlton Smith:问题! navigationController 你在哪里定义的?它是否与IBOutlet 相关联? 如果您现在查看那里发布的代码,这就是我终于开始工作的地方。我没有将导航控制器与 IBOutlet 连接。

以上是关于在核心数据项目中加载视图控制器时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

从包中加载 NIB 时出现异常

在 Firebase Crashlytics 仪表板中加载您的问题时出现 iOS 错误

CollectionView 单元格未在视图控制器中加载

无法在 UIView 中加载控制器的视图

segueing时出现核心数据错误:无法在NSManagedObject类上调用指定的初始值设定项

在 Pygame 中加载资产时出现 FileNotFound 错误 [重复]