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:'
但喜,我已經在這是一個的UIViewController協議符合UITableViewDataSource委託界面中指定。
那有什麼用?
我應該只是複製代碼?
注意:現在我已經知道設計是愚蠢的。這個問題留待將來使用。
鑑於當時我們總是將UITableViewDelegate和UITableViewDataSource委託設置爲同一個對象,我想知道爲什麼蘋果會將它們分開?哦,好吧...... –
因爲委託是處理交互的東西,而數據源就是這樣。它們可以是並且有時是獨立的對象 - 將其視爲控制器與模型。 –