我的应用程序必须适用于iPhone和iPad。对于某些视图,iPhone版本与iPad版本共享相同的视图(例如,tableview)。因此,为了更好的可重用性,我编写了这样的tableview,并在iPhone控制器和iPad控制器中使用它。
·H
@interface NotificationView : UITableView
@end
的.m
@interface NotificationView()<UITableViewDelegate,UITableViewDataSource>
@end
@implementation NotificationView
- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style
{
self = [super initWithFrame:frame style:style];
if (self) {
self.delegate = self;
self.dataSource = self;
self.rowHeight = 80;
self.separatorStyle = UITableViewCellSeparatorStyleNone;
}
return self;
}
#pragma mark - UITableViewDataSource & UITableViewDelegate
我觉得这样写是不对的,但不知道为什么...... 我搜索了一段时间,但没有得到任何有用的东西。所以,我的问题是:
UITableView
的最佳做法是什么? 如果有人能解释,请提前致谢。
答案 0 :(得分:2)
只要您实现填充表所需的所有方法,它就会正常工作。但它之所以会让你烦恼,是因为它的设计很糟糕 - 它完全模糊了MVC设计中的所有线条。您的tableView是一个视图。它应该是愚蠢的,并且它使用委托来插入你使用简单适配器的任何模型对象,这是有充分理由的。问问自己,我在UITableView的这个子类中是否有任何特定于视图(绘图,外观)的东西?如果没有那么为什么不做一个tableViewController或一个小的NSObject子类来填充表? 最好。