iPhone:当我在表格视图中单击一个单元格时,应用程序崩溃了

时间:2010-04-21 09:00:19

标签: iphone objective-c sdk

编译我的应用程序工作 - 一切都很好。我得到的唯一错误是不推荐使用的函数(setText)。

现在唯一的问题是,当我点击表格中的单元格时,应用程序会崩溃,即使它意味着要推送到堆栈中的下一个视图。

如果您需要任何代码,请欣赏任何解决方案,只需询问。

另外,我怎样才能确保一个单元格只能进入一个视图?例如:

当我点击CSS时,它会带我到一个具有不同CSS级别的新表。当我点击新视图中的某个项目时,会出现一篇关于我刚刚选择的内容的文章。

的问候,
千斤顶

这是我在didSelectRowAtIndexPath方法中的代码:

   -(void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if(indexPath.row==0){

    NextViewController *nextController = [[NextViewController alloc]
                                          initWithNibName:@"NextView" bundle:nil];
    [self.navigationController pushViewController:nextController
                                         animated:YES];
    [nextController changeItemTable:[arryClientSide
                                     objectAtIndex:indexPath.row]];
}
}
@end

(根据评论的要求)。

6 个答案:

答案 0 :(得分:1)

  

因未捕获而终止应用   例外   'NSInternalInconsistencyException',   原因: - [UIViewController   _loadViewFromNibNamed:bundle:]加载了“NextView”笔尖但视图插座   没设定。'

  1. 使用Interface Builder打开NextView
  2. 将Class值设置为:“NextViewController”到文件所有者set files owner class http://img718.imageshack.us/img718/3799/screenshot20100421at140.png
  3. 连接View插座(按住Ctrl并单击并拖动 - 应显示一条蓝线 - 从文件所有者到UIView并在选项中选择“视图”) alt text http://img685.imageshack.us/img685/3799/screenshot20100421at140.png

答案 1 :(得分:1)

当我们使用xib-interface创建新的UIViewControllerSubClass时,xib文件被创建为sourcecode.xib(可以在获取该xib文件的信息中看到):将sourcecode.xib更改为“file.xib”并查看魔术:)

答案 2 :(得分:0)

您需要像这样更新您的代码:

 -(void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if(indexPath.row==0){

    NextViewController *nextController = [[NextViewController alloc]
                                          initWithNibName:@"NextView" bundle:nil];
    [nextController changeItemTable:[arryClientSide
                                     objectAtIndex:indexPath.row]];
    [self.navigationController pushViewController:nextController
                                         animated:YES];
    }
else{   }
}

尝试使用此代码...

答案 3 :(得分:0)

评论中的错误说明:

  

因未捕获而终止应用   例外   'NSInternalInconsistencyException',   原因:' - [UIViewController   _loadViewFromNibNamed:bundle:]加载了“NextView”笔尖但视图插座   没设定。'

如果从nib文件加载视图控制器并且其视图未设置为异常,则抛出异常。因此,当您在IB中创建视图时,必须将视图插座连接到视图控制器对象(可能是IB中的文件所有者)。

编辑:所以基本上在您的nib文件中的IB中,您需要执行以下操作:
1.将文件所有者的类型设置为NextViewController
2.将NextViewController的视图出口连接到View对象

答案 4 :(得分:0)

发布你分配的NextViewController!

[nextController release];

它正在泄漏。

答案 5 :(得分:0)

不要使用IB。相反,不要使用alloc init,然后在加载视图中:

self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];