无法将TTTableViewController推送到导航控制器上

时间:2011-10-17 05:24:58

标签: iphone uinavigationcontroller three20 uitabbar

我有一个应用程序,我在导航控制器内部有一个TTTableView控制器,内部是一个TabBar。

我想要它,以便如果用户选择一个项目,它将推送另一个TTTableView与该类别下的项目。

我的代码是

-(void)didSelectObject:(id)object atIndexPath:(NSIndexPath *)indexPath {
    if ([object isKindOfClass:[TTTableMoreButton class]]) {
        [super didSelectObject:object atIndexPath:indexPath];
    } else {
        CategoryViewController *viewController = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil];
        [self.navigationController pushViewController:viewController animated:YES];
        [viewController release];
    }
}

CategoryViewController设置为

@interface CategoryViewController : TTTableViewController

并且CategoryViewController.xib文件具有数据源&委托设置为文件所有者,视图设置为tableview,tableview类设置为TTTableView。

当我运行它时,选择行时会出现以下错误

2011-10-17 16:18:23.819 Biz Insider[34067:f803] -[CategoryViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x6c93d30
2011-10-17 16:18:23.820 Biz Insider[34067:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CategoryViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x6c93d30'
*** First throw call stack:
(0x1893052 0x157ed0a 0x1894ced 0x17f9f00 0x17f9ce2 0xb4cf2b 0xb4f722 0x9ff7c7 0x9ff2c1 0x9b61e 0xa0228c 0xa06783 0x9bb48 0x9b1301 0x1894e72 0x89192d 0x89b827 0x821fa7 0x823ea6 0x823580 0x18679ce 0x17fe670 0x17ca4f6 0x17c9db4 0x17c9ccb 0x1f88879 0x1f8893e 0x972a9b 0x273d 0x26b5)
terminate called throwing an exceptionCurrent language:  auto; currently objective-c

如果我尝试推送另一个视图(我有一个带有webview的视图),那么它工作正常,或者如果我进入界面构建器并将文件所有者的“tableView”链接到TTTableView对象,它将正常工作并推送除了“下拉到刷新”功能之外的控制器不会工作所以我假设这样做的时候剔除不正确。

非常感谢任何帮助。

编辑: 我觉得它与以下内容有关

-(id<UITableViewDelegate>)createDelegate {
    return [[[TTTableViewDragRefreshDelegate alloc] initWithController:self] autorelease];
}

这将委托设置为TTTableViewDragRefreshDelegate,它实现了numberOfRowsInSection和所有垃圾。还有另一种方法吗?

干杯, 迪安

2 个答案:

答案 0 :(得分:0)

日志显示,在您的自定义类CategoryViewController中,方法tableView:numberOfRowsInSection:未实现,因此无法调用它。

检查并检查其参数类型。

答案 1 :(得分:0)

这是一个奇怪的,但我从

改变了它
CategoryViewController *viewController = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil];

CategoryViewController *viewController = [[CategoryViewController alloc] init];

它现在神奇地起作用......不要问我怎么或为什么。

NIB中肯定有一些东西搞砸了,但我不知道现在整个布局是如何工作的,没有NIB。