【发布时间】: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;
}
【问题讨论】:
标签: objective-c cocoa-touch ios core-data xcode4