0

我的大部分 tableView 都有一个恒定的表格行高。该表的高度可以更改,但只能在设计时更改。我不想对该表格行高进行两次编码。

所以我做这样的事情:

@interface UIViewController (cellHeightofFirstRowForTable) <UITableViewDataSource>


@end

#import "UIViewController+cellHeightofFirstRowForTable.h"

@implementation UIViewController (cellHeightofFirstRowForTable)
-(CGFloat) cellHeightForTable: (UITableView *) tableView
{
    cellHeight= [self tableView:tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
}
@end

基本上第一次询问表高度,我想计算一次,将其存储在静态变量中,然后简单地使用该值。

我得到了这个编译错误:

 No visible @interface for 'UIViewController' declares the selector 'tableView:heightForRowAtIndexPath:'

但是,嘿,我已经在界面中指定这是一个符合 UITableViewDataSource 委托的 UIViewController 协议。

那么有什么问题呢?

我应该只复制代码吗?

注意:现在我已经知道这个设计很愚蠢。问题仍然存在以备将来使用。

4

1 回答 1

1

不管明智的直觉会告诉你什么,tableView:heightForRowAtIndexPath:是 的一部分UITableViewDelegate,而不是UITableViewDataSource@optional即使您确实声明了实现该协议的类别,它也被标记为UIViewController,这实际上并不能保证该方法已实现。

于 2012-11-21T02:08:27.993 回答