在基于导航的应用程序中加载UITableView的问题

时间:2009-06-13 10:15:31

标签: iphone uitableview uiviewcontroller uinavigationcontroller

在基于导航的应用中,当我尝试使用UITableView加载另一个已实现initWithNibName的视图时:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UIViewController *detailsViewController = [[UIViewController alloc] initWithNibName:@"bloop2ViewController" bundle:nil];
    [[self navigationController] pushViewController:detailsViewController animated:YES];
    [detailsViewController release];
}
单击UITableView单元格后,

获取:

2009-06-13 11:44:41.089 Bloop[75227:20b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0xd446f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key tableView.' 2009-06-13 11:44:41.092 Bloop[75227:20b] Stack: (
807902715, 2429103675, 808061681, 810717848, 810716389, 816538544, 807805711, 816533170, 816541363, 815230552, 815224116, 815223834, 815217291, 815258907, 815254969, 815262662, 815243017, 815265053, 815242666, 11044, 815018240, 815005661, 810768858, 807687328, 807683624, 839142449, 839142646, 814752238, 9088, 8942 )

但是当我在InterfaceBuilder中断开UITableView时,加载视图没有任何问题(除非无法将数据推入其中)。

UITableView实现是正确的 - 我在一个新的XCode项目中尝试过它,它运行得很好。

5 个答案:

答案 0 :(得分:6)

错误消息显示您正在尝试在UIViewController类型的对象上设置属性“tableView”,它没有。我只是猜测,但也许你的nib文件中有一个派生的视图控制器,它有属性tableView,但是你构造的不是派生对象,而是UIViewController。你应该试试:

MyTableViewController *detailsViewController = [[MyTableViewController alloc] initWithNibName:@"bloop2ViewController" bundle:nil];

答案 1 :(得分:0)

我遇到了这个问题,修复方法是确保两者

  1. 我在主窗口xib中的标签栏下面的视图控制器中设置了NIB名称,并且
  2. 类名已在子视图控制器中设置。
  3. This页面对我有帮助。

答案 2 :(得分:0)

我刚刚遇到过这个问题。在我的情况下,原因是MyTableViewController的实现代码被排除在当前构建配置之外。希望有所帮助。

答案 3 :(得分:0)

另一种可以咬你的方式。我把xib扔了一个视图并重新开始。无论我做了什么,视图都会在加载时引发此异常。把头发拉了几个小时之后,我终于从模拟器中删除了应用程序并修复了它。不知何故,旧的xib在安装时没有被替换。

答案 4 :(得分:0)

在这2小时后,我忘了

@synthesize tableView = _tableView;

希望有所帮助

马里奥