我正在编写一个有两个主要视图的应用程序。第一个是主屏幕,第二个是UITableViewController,并且填充了一个数组以显示用户的历史记录。 TableView加载很好并且填充得很好,问题是当我打开主View View备份时。如果我使用:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
ViewController *myView;
myView = [[ViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:myView animated:YES];
}
ViewController显示但屏幕为黑色!
如果我使用:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
ViewController *myView;
myView = [[ViewController alloc] initWithNibName:@"ViewController" bundle:[NSBundle mainBundle]];
[self presentModalViewController:myView animated:YES];
}
应用程序崩溃并告诉我:
*由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法加载NIB 捆绑:'NSBundle (加载)'名称'ViewController'' * 第一次抛出调用堆栈:(0x30f0a88f 0x35fdb259 0x30f0a789 0x30f0a7ab 0x318a434b 0x318123c7 0x316efc59 0x31665c17 0x31670267 0x316701d5 0x3170f59b 0x3170e367 0x317696a7 0x36dc1 0x316de93d 0x31758627 0x3094d933 0x30edea33 0x30ede699 0x30edd26f 0x30e604a5 0x30e6036d 0x3129f439 0x3165acd5 0x3465b 0x34600)终止被叫 抛出异常(lldb)
我对iPhone和iPad的应用程序编程非常陌生,但我认为这将是一项相当简单的任务。我之前在其他应用程序中切换了视图,但这个只是不起作用。请帮忙!!!
答案 0 :(得分:0)
如果错误显示您没有名为ViewController的nib文件,请检查项目是否有名为ViewController的nib文件
答案 1 :(得分:0)
3件事:
1)真的考虑使用更新的xcode和故事板来处理这样的简单应用程序(有支持和反对故事板的论据,但如果你是初学者,那么它们就是你的选择)。
2)你的代码:
myView = [[ViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:myView animated:YES];
这没有多大意义,除非你做的事非常复杂(并且你说你是iphone开发的新手) - 这表明你正在以编程方式完全创建一个自定义的UIViewController。
以下代码更有意义,但错误表明您尚未在项目中创建ViewController NIB文件(使用Interface Builder编辑的ViewController.xib)。
myView = [[ViewController alloc] initWithNibName:@"ViewController" bundle:[NSBundle mainBundle]];
[self presentModalViewController:myView animated:YES];
3)你说你创建了几个ViewControllers,但是你如何在它们之间进行转换?通常你会使用UINavigationController或UITabBarController来处理转换(同样,除非你做的事情更复杂)。然后,这些包括允许在视图之间切换的机制。
回到我的第一点 - 使用故事板使管理这些多个视图变得更加简单。