DSNestedAccordion 0.1.0

DSNestedAccordion 0.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

Deepan Subramani维护。



适用于Cocoa Touch的嵌套折叠视图

当前版本

版本:0.1.0

幕后机制

  • 可插拔且与UI层无关
  • 支持无限嵌套级别
  • 使用ARC(自动引用计数)

用法

要运行示例项目,首先从库复制repo,并在Example目录中首先运行pod install

扩展DSNestedAccordionHandler

DSNestedAccordionHandler提供了支持嵌套表格视图的UITableViewDataSource和UITableViewDelegate的抽象实现

#import "DSNestedAccordionHandler.h"

@interface DSBeerTableViewHandler : DSNestedAccordionHandler

@end

实现3个数据源方法

- (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路径。

  • invertebrate
    • worm
      • fluke, hookworm, earthworm
    • arthropod
      • crab, spider, shrimp
  • vertebrate
    • amphibian
      • frog, crocodile
    • mammal
      • dog, cat, lion, tiger
    • bird
      • duck, pigeon, peacock, parrot

示例实现

- (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/发布。