在核心数据项目中加载View Controller的问题

时间:2011-04-20 18:08:30

标签: objective-c cocoa-touch ios core-data xcode4

我刚刚开始学习在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;
}

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

更新:嗯,我终于让它自己工作了,虽然我不确定它为什么会起作用。我所做的就是删除导航控制器作为app委托的属性,并在initFinishLaunchingWithOptions方法中将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 个答案:

答案 0 :(得分:0)

尝试不同的东西:

-(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;
}