我正在制作我的第一个iPhone应用程序并取得良好进展。但有一点我不明白。
当我的应用程序启动时,它会显示一个带有某些功能的UIView。这很好用。该屏幕上的一个按钮应该加载一个包含导航控制器的新视图(HistoryViewController)。
问题是......每当加载HistoryViewController时,应用程序崩溃,因为没有视图。这是真的,因为在xib-File中我无法将文件所有者的视图连接到任何东西: http://www.freeimagehosting.net/image.php?1a3caa8b8d.png
我肯定在某处缺乏知识,但经过数小时的研究后,我无法解决这个问题。
任何提示? 谢谢!
答案 0 :(得分:0)
通常你会:
或
使用第一种方法,告诉视图控制器动态加载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];
}
这将创建一个导航控制器,将您的历史视图控制器显示为根视图控制器。不能轻松。