如何在选择TableView项时调出ViewController?

时间:2012-07-03 14:34:20

标签: iphone ipad uiviewcontroller uitableview

我正在编写一个有两个主要视图的应用程序。第一个是主屏幕,第二个是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的应用程序编程非常陌生,但我认为这将是一项相当简单的任务。我之前在其他应用程序中切换了视图,但这个只是不起作用。请帮忙!!!

2 个答案:

答案 0 :(得分:0)

如果错误显示您没有名为ViewController的nib文件,请检查项目是否有名为ViewController的nib文件

答案 1 :(得分:0)

3件事:

1)真的考虑使用更新的xcode和故事板来处理这样的简单应用程序(有支持和反对故事板的论据,但如果你是初学者,那么它们就是你的选择)。

以下是您可以遵循的好文档:http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/Introduction/Introduction.html

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来处理转换(同样,除非你做的事情更复杂)。然后,这些包括允许在视图之间切换的机制。

回到我的第一点 - 使用故事板使管理这些多个视图变得更加简单。