iPhone SDK:无法为导航控制器指定视图

时间:2010-07-31 22:37:19

标签: iphone objective-c controller navigation

我正在制作我的第一个iPhone应用程序并取得良好进展。但有一点我不明白。

当我的应用程序启动时,它会显示一个带有某些功能的UIView。这很好用。该屏幕上的一个按钮应该加载一个包含导航控制器的新视图(HistoryViewController)。

问题是......每当加载HistoryViewController时,应用程序崩溃,因为没有视图。这是真的,因为在xib-File中我无法将文件所有者的视图连接到任何东西: http://www.freeimagehosting.net/image.php?1a3caa8b8d.png

我肯定在某处缺乏知识,但经过数小时的研究后,我无法解决这个问题。

任何提示? 谢谢!

2 个答案:

答案 0 :(得分:0)

通常你会:

  • 单击该底线(历史表视图控制器,“HTVC”)并在检查器窗口中指定NIB名称 - 这意味着您首先必须创建新的NIB。

  • 双击底线(HTVC),弹出320x480预览窗口,然后从库中拖入UIView。

使用第一种方法,告诉视图控制器动态加载NIB作为连接视图,并使用第二种方法使用IB为视图控制器执行此操作。您拖入的视图将显示为该底线(HTVC)的子项。

编辑以实际加载您创建的nib文件,执行此操作以推送视图控制器:

    UIViewController *controller = [[UIViewController alloc] autorelease];
    [controller initWithNibName:@"nibfilename" bundle:nil];
    [self.navigationController pushViewController:controller animated:YES];

将UIViewController替换为您自己的视图控制器类(如果需要),将nibfilename替换为nib的文件名(减去扩展名!)

答案 1 :(得分:-1)

很难说出你的问题究竟是什么,但我会提供一些建议。

在界面构建器中创建导航控制器(或选项卡控制器)时,很容易理解正在发生的事情,所以我建议删除界面构建器一秒钟,然后让它在代码中构建。

总的来说,我真的不喜欢在界面构建器中构建UI导航控制器或制表视图控制器,我真的只是自己构建视图并在代码中创建UINavigationController。

您有一个视图,显示您希望包含在UINavigationController中的HistoryTableViewController,因此执行此操作的代码是:

- (void) showHistory 
{
      HistoryViewController *historyVC = [[HistoryViewController alloc] init];
      // If you create historyviewcontroller in nib
      // HistoryViewController *histroyVC [[HistoryViewController alloc] initWithNibName:@"myNib" bundle:nil];

      UINavigationController *navController = [[UINavigationController alloc] initWithRootController:histroyViewController];
      [self presentModalViewContoller:navController animated:YES];
}

这将创建一个导航控制器,将您的历史视图控制器显示为根视图控制器。不能轻松。