原文地址:http://wangjun.easymorse.com/?p=1339
我们都知道tableview的实现原理,就是创建当前可见个数的tablecell,滚动过程中只是更改不可见的tablecell到可见的位置并且更新数据。这样可以避免滚动很多屏不用创建相应的视图,这样就不会造成内存泄漏。
下面是实现的效果图:
![](http://www.cocoachina.com/cms/uploads/allimg/111103/3292_111103115915_1.png)
下面是实现的代码:
#pragma mark DTGridViewDataSource Methods
- (NSInteger)numberOfRowsInGridView:(DTGridView *)gv {
return 1;
}
- (NSInteger)numberOfColumnsInGridView:(DTGridView *)gv forRowWithIndex:(NSInteger)index {
return 20;
}
- (CGFloat)gridView:(DTGridView *)gv heightForRow:(NSInteger)rowIndex {
return gv.frame.size.height;
}
- (CGFloat)gridView:(DTGridView *)gv widthForCellAtRow:(NSInteger)rowIndex column:(NSInteger)columnIndex {
return gv.frame.size.width;
}
- (DTGridViewCell *)gridView:(DTGridView *)gv viewForRow:(NSInteger)rowIndex column:(NSInteger)columnIndex {
MyTableCell *cell = (MyTableCell *)[gv dequeueReusableCellWithIdentifier:@"cell"];
if (!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"MyTableCell" owner:self options:nil] objectAtIndex:0];
cell.identifier = @"cell";
}
[cell onShowCell];
return cell;
}
项目源代码:http://easymorse-iphone.googlecode.com/svn/trunk/VTableViewDemo/
DTGridView 地址:https://github.com/danielctull/DTGridView