CYLTableViewPlaceHolder 使用教程
CYLTableViewPlaceHolder 使用教程
CYLTableViewPlaceHolder一行代码完成“空TableView占位视图”管理项目地址:https://gitcode.com/gh_mirrors/cy/CYLTableViewPlaceHolder
项目介绍
CYLTableViewPlaceHolder 是一个开源的 iOS 库,旨在为 UITableView 提供一个简单的方法来显示空状态(即当列表为空时显示的占位视图)。这个库通过扩展 UITableView 类,使得开发者可以轻松地在任何 UITableView 中添加自定义的空状态视图,而无需编写大量重复的代码。
项目快速启动
安装
你可以通过 CocoaPods 安装 CYLTableViewPlaceHolder。在你的 Podfile 中添加以下代码:
pod 'CYLTableViewPlaceHolder'
然后运行 pod install
。
使用
在你的 UITableView 所在的控制器中,导入 CYLTableViewPlaceHolder:
#import <CYLTableViewPlaceHolder.h>
实现 UITableViewDataSource
和 CYLTableViewPlaceHolderDelegate
协议,并在 tableView:numberOfRowsInSection:
方法中返回 0 来触发空状态视图:
@interface YourViewController () <UITableViewDataSource, CYLTableViewPlaceHolderDelegate>
@property (nonatomic, strong) UITableView *tableView;
@end
@implementation YourViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
self.tableView.dataSource = self;
self.tableView.placeHolderDelegate = self;
[self.view addSubview:self.tableView];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 0; // 返回 0 来触发空状态视图
}
- (UIView *)makePlaceHolderView {
UIView *placeHolderView = [[UIView alloc] initWithFrame:self.tableView.bounds];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, 50)];
label.text = @"暂无数据";
label.textAlignment = NSTextAlignmentCenter;
[placeHolderView addSubview:label];
return placeHolderView;
}
@end
应用案例和最佳实践
自定义空状态视图
你可以通过实现 makePlaceHolderView
方法来自定义空状态视图。例如,你可以添加一个图片和一个提示文本:
- (UIView *)makePlaceHolderView {
UIView *placeHolderView = [[UIView alloc] initWithFrame:self.tableView.bounds];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"empty_icon"]];
imageView.center = CGPointMake(self.tableView.bounds.size.width / 2, self.tableView.bounds.size.height / 2 - 50);
[placeHolderView addSubview:imageView];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, imageView.frame.origin.y + imageView.frame.size.height + 20, self.tableView.bounds.size.width, 50)];
label.text = @"暂无数据,请稍后再试";
label.textAlignment = NSTextAlignmentCenter;
[placeHolderView addSubview:label];
return placeHolderView;
}
动态更新空状态视图
你可以根据不同的数据状态显示不同的空状态视图。例如,当网络请求失败时显示一个带有重试按钮的视图:
- (UIView *)makePlaceHolderView {
UIView *placeHolderView = [[UIView alloc] initWithFrame:self.tableView.bounds];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, 50)];
label.text = @"网络请求失败";
label.textAlignment = NSTextAlignmentCenter;
[placeHolderView addSubview:label];
UIButton *retryButton = [UIButton buttonWithType:UIButtonTypeSystem];
retryButton.frame = CGRectMake(0, label.frame.origin.y + label.frame.size.height + 2
CYLTableViewPlaceHolder一行代码完成“空TableView占位视图”管理项目地址:https://gitcode.com/gh_mirrors/cy/CYLTableViewPlaceHolder