这是一个可折叠列表,其功能类似于 UITableView,但是你可以通过点击来折叠和展开单元格。传递 UIViews 以指定单元格展开时显示的内容。通过委托机制工作,类似于 UITableView。这是一个 UIScrollView 子类。
将随附的 CollapseClick.m, CollapseClick.h, CollapseClickCell.m, CollapseClickCell.h, CollapseClickCell.xib, CollapseClickArrow.h, CollapseClickArrow.m 文件拖放到你的项目中。它们位于顶层目录 CollapseClick 中。你还可以使用随附的 Xcode 项目查看如何使用这些文件。
将 CollapseClick.h 导入到你的 ViewController.h 文件中。接下来,在 InterfaceBuilder 中,将 UIScrollView 拖放到 ViewController 中。点击身份检查器(Xcode 右侧面板中从左数第三个图标)并更改类为 CollapseClick
。将 CollapseClick 连接到 ViewController.h 文件。现在添加 CollapseClickDelegate。你的界面现在应该如下所示
#import <UIKit/UIKit.h>
#import "CollapseClick.h"
@interface ViewController : UIViewController <CollapseClickDelegate> {
__weak IBOutlet CollapseClick *myCollapseClick;
}
@end
现在你可以开始编写头部代码了。切换到 ViewController.m 并确保在 ViewDidLoad 中设置委托。
myCollapseClick.CollapseClickDelegate = self;
CollapseClick 通过委托机制工作,类似于 UITableView 如何获取并显示其数据。有 7 个委托方法可以实施,其中 3 个是必需的。
-(int)numberOfCellsForCollapseClick {
return (int)newInt;
}
此方法相当清晰,就是显示的 CollapseClick 单元格数量。通常,你会使用类似于 UITableView,此处返回的是数据数组的 count。
-(NSString *)titleForCollapseClickAtIndex:(int)index {
return (NSString*)newTitle;
}
此方法仅设置每个 CollapseClick 单元格的标题标签文本。
-(UIView *)viewForCollapseClickContentViewAtIndex:(int)index {
return (UIView *)contentView;
}
此方法设置每个 CollapseClick 单元格的 ContentView 属性。这是最有意思的部分。你可以使用程序创建的 UIView,或使用在 Interface Builder 中创建的 UIView 的实例变量。只要它是 UIView,此方法就会将其放入 CollapseClick 单元格的可折叠部分。
-(UIColor *)colorForCollapseClickTitleViewAtIndex:(int)index {
return (UIColor *)color;
}
此方法设置 CollapseClick 单元格标题或 TitleView 的背景颜色。在上述截图中对应的是红色区域。默认值为 [UIColor colorWithWhite:0.4 alpha:1.0]
-(UIColor *)colorForTitleLabelAtIndex:(int)index {
return (UIColor *)color;
}
此方法设置标题标签的 textColor 属性。默认值为 [UIColor colorWithWhite]
-(UIColor *)colorForTitleArrowAtIndex:(int)index {
return (UIColor *)color;
}
此方法用于设置每个CollapseClick Cell右侧箭头的颜色。默认颜色为:UIColor colorWithWhite:0.0 alpha:0.35
-(void)didClickCollapseClickCellAtIndex:(int)index isNowOpen:(BOOL)open; {
// Do something here if you wish
}
此方法允许在点击CollapseClick Cell之后运行任何方法,并通知你cell现在是打开状态(如果为FALSE,则为关闭状态)。
-(void)reloadCollapseClick;
此方法将重新绘制和布局你的CollapseClick视图。在你对与CollapseClick一起使用的数据进行更改后,请调用此方法。
-(CollapseClickCell *)collapseClickCellForIndex:(int)index;
此方法将返回指定索引处的整个CollapseClickCell。下面还有返回仅为ContentView的方法。
-(UIView *)contentViewForCellAtIndex:(int)index;
此方法将返回指定索引处的CollapseClickCell的ContentView。
-(void)scrollToCollapseClickCellAtIndex:(int)index animated:(BOOL)animated;
此方法将滚动CollapseClick到指定索引的cell。你可以选择是否将此过程动画化。
-(void)openCollapseClickCellAtIndex:(int)index animated:(BOOL)animated;
-(void)closeCollapseClickCellAtIndex:(int)index animated:(BOOL)animated;
这些方法允许你通过编程方式打开或关闭CollapseClickCell,并对该过程进行动画处理。
-(void)openCollapseClickCellsWithIndexes:(NSArray *)indexArray animated:(BOOL)animated;
-(void)closeCollapseClickCellsWithIndexes:(NSArray *)indexArray animated:(BOOL)animated;
这些方法允许你通过编程方式一次打开或关闭多个CollapseClickCell,并对该过程进行动画处理。为此,创建一个包含NSNumbers的NSArray。每个NSNumber将对应你想要打开/关闭的cell的索引。
该项目在标准的MIT许可证下发布。请随意使用并扭曲它,并推荐任何酷炫的更改来帮助改进代码。