0

私のtableViewのほとんどは、テーブルの行の高さが一定です。そのテーブルの高さは変更できますが、設計時にのみ変更できます。そのテーブルの行の高さを2回エンコードする気はありません。

だから私はこのようなことをします:

@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 に答える