objective-c - 在核心数据项目中加载 View Controller 时出现问题

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

我最近才开始学习在 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/

相关文章:

objective-c - iOS - viewForFooterInSection 粘在 UITableView 的底部

ios - 为什么Tabbar选中项总是0?

iphone - UITableViewCell 中的 UIScrollView

ios - 如何卡住文本域的编辑?

ios - uilabel 文本仅在需要时换行

iphone - 核心数据并发 - NSManagedObjectContext

iphone - 更改 UISearchBar 的大小

ios - 调用 NSMutableAttributedString 的子类中的追加时应用程序崩溃

iphone - RevMob sdk 5.9.0 在导入 <RevMobAds/RevMobAds.h> 时出现头文件错误

ios - 如何在Xcode 4.2上查看崩溃报告