适用于Cocoa Touch的嵌套折叠视图
版本:0.1.0
要运行示例项目,首先从库复制repo,并在Example目录中首先运行pod install
。
DSNestedAccordionHandler提供了支持嵌套表格视图的UITableViewDataSource和UITableViewDelegate的抽象实现
#import "DSNestedAccordionHandler.h"
@interface DSBeerTableViewHandler : DSNestedAccordionHandler
@end
- (NSInteger)noOfRowsInRootLevel;
- (NSInteger)tableView:(UITableView *)view noOfChildRowsForCellAtPath:(DSCellPath *)path;
- (UITableViewCell *)tableView:(UITableView *)view cellForPath:(DSCellPath *)path;
DSCellPath表示从嵌套模型的根级别到单元格的遍历路径。_levelIndexes_属性将保存每层嵌套中的父单元格索引。
例如,_levelIndexes_有@[1, 2, 0]的值将标识以下示例数据中的vertibrate > bird > duck路径。
- (NSInteger)noOfRowsInRootLevel {
return _beers.allFlavors.count;
}
- (NSInteger)tableView:(UITableView *)view noOfChildRowsForCellAtPath:(DSCellPath *)path {
switch (path.levelIndexes.count) {
case 1:
return [self noOfBeerStylesForFlavorAtIndex:[path.levelIndexes[0] integerValue]];
case 2:
return [self noOfNotableBeerStylesForStyleAtIndex:[path.levelIndexes[1] integerValue] withFlavorAtIndex:[path.levelIndexes[0] integerValue]];
default:
0;
}
return 0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForPath:(DSCellPath *)path {
switch (path.levelIndexes.count) {
case 1:
return [self tableView:tableView cellForBeerFlavorAtIndex:[path.levelIndexes[0] integerValue]];
case 2:
return [self tableView:tableView cellForBeerStyleAtIndex:[path.levelIndexes[1] integerValue] withFlavorWithIndex:[path.levelIndexes[0] integerValue]];
default:
return [self tableView:tableView cellForNotableBeerStyleAtIndex:[path.levelIndexes[2] integerValue] ofStyleWithIndex:[path.levelIndexes[1] integerValue] withFlavorWithIndex:[path.levelIndexes[0] integerValue]];
}
}
iOS 6
deepan, [email protected]
如果你有任何问题、评论或建议,给我发消息。如果你发现错误,或者想要提交Pull Request,告诉我。
DSNestedAccordion可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。
本演示概念的灵感来源于发表于这篇文章,该文章由http://www.splendidtable.org/发布。