【问题标题】:Cannot push TTTableViewController onto Navigation Controller无法将 TTTableViewController 推送到导航控制器上
【发布时间】:2011-10-17 05:24:58
【问题描述】:

我有一个应用程序,其中在导航控制器内部有一个 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 和所有垃圾。还有其他方法吗?

干杯, 院长

【问题讨论】:

    标签: iphone uinavigationcontroller three20 uitabbar


    【解决方案1】:

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

    检查它并检查其参数的类型。

    【讨论】:

    • 我看到了,但它不应该被实施吗?仅当我更改其功能时。
    • 当然应该实现。你应该说你想显示多少行
    • 它在我拥有的其他视图中工作,据我所知,TTTableViewController 使用数据源并将这些调用传递给数据源。所有这些功能都在数据源中实现。
    • 问题是 CategoryViewControllerTTTableViewController 在您的情况下都没有实现该方法。那就是。
    【解决方案2】:

    嗯,这很奇怪,但我把它改成了

    CategoryViewController *viewController = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil];
    

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

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

    NIB 中一定有什么东西弄乱了它,但我不知道在没有 NIB 的情况下整个布局现在是如何工作的。

    【讨论】:

      猜你喜欢
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 2020-07-14
      • 2014-01-11
      • 1970-01-01
      相关资源
      最近更新 更多