我最近才开始学习在 XCode 4 中使用核心数据,我在从核心数据项目中的应用程序委托(delegate)加载我的第一个 View Controller 时遇到了一个非常奇怪的问题。我真的不确定我做错了什么,只是当核心数据没有实现时我所做的工作非常好,但在核心数据实现时却没有。
我发现发生的事情是 appDelegate 将加载,然后它将开始加载 View Controller (我可以让它记录它通过 initWithNibName 方法)。但是随后 View Controller 消失了,我看到的只是主窗口。错误日志中没有生成错误。
这里是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;
}
目前 View Controller 基本上只有 stub 数据,但我可以根据要求发布任何方法。预先感谢您的帮助。
更新:好吧,我终于让它自己工作了,尽管我不确定它为什么工作。我所做的只是将导航 Controller 作为应用程序委托(delegate)的属性删除,并在 didFinishLaunchingWithOptions 方法中分配初始化自动释放它。之后它工作正常。上面发布的代码终于起作用了。不过,奇怪的是,我在我正在从事的另一个项目中尝试了同样的事情,但在那个项目上却没有奏效。
这是第二个项目的代码
- (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;
}
最佳答案
像这样尝试一些不同的东西:
-(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;
}
关于objective-c - 在核心数据项目中加载 View Controller 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5734692/