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>

实现 UITableViewDataSourceCYLTableViewPlaceHolderDelegate 协议,并在 tableView:numberOfRowsInSection: 方法中返回 0 来触发空状态视图:

  1. @interface YourViewController () <UITableViewDataSource, CYLTableViewPlaceHolderDelegate>

  2. @property (nonatomic, strong) UITableView *tableView;

  3. @end

  4. @implementation YourViewController

  5. - (void)viewDidLoad {

  6. [super viewDidLoad];

  7. self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];

  8. self.tableView.dataSource = self;

  9. self.tableView.placeHolderDelegate = self;

  10. [self.view addSubview:self.tableView];

  11. }

  12. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

  13. return 0; // 返回 0 来触发空状态视图

  14. }

  15. - (UIView *)makePlaceHolderView {

  16. UIView *placeHolderView = [[UIView alloc] initWithFrame:self.tableView.bounds];

  17. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, 50)];

  18. label.text = @"暂无数据";

  19. label.textAlignment = NSTextAlignmentCenter;

  20. [placeHolderView addSubview:label];

  21. return placeHolderView;

  22. }

  23. @end

应用案例和最佳实践

自定义空状态视图

你可以通过实现 makePlaceHolderView 方法来自定义空状态视图。例如,你可以添加一个图片和一个提示文本:

  1. - (UIView *)makePlaceHolderView {

  2. UIView *placeHolderView = [[UIView alloc] initWithFrame:self.tableView.bounds];

  3. UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"empty_icon"]];

  4. imageView.center = CGPointMake(self.tableView.bounds.size.width / 2, self.tableView.bounds.size.height / 2 - 50);

  5. [placeHolderView addSubview:imageView];

  6. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, imageView.frame.origin.y + imageView.frame.size.height + 20, self.tableView.bounds.size.width, 50)];

  7. label.text = @"暂无数据,请稍后再试";

  8. label.textAlignment = NSTextAlignmentCenter;

  9. [placeHolderView addSubview:label];

  10. return placeHolderView;

  11. }

动态更新空状态视图

你可以根据不同的数据状态显示不同的空状态视图。例如,当网络请求失败时显示一个带有重试按钮的视图:

  1. - (UIView *)makePlaceHolderView {

  2. UIView *placeHolderView = [[UIView alloc] initWithFrame:self.tableView.bounds];

  3. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, 50)];

  4. label.text = @"网络请求失败";

  5. label.textAlignment = NSTextAlignmentCenter;

  6. [placeHolderView addSubview:label];

  7. UIButton *retryButton = [UIButton buttonWithType:UIButtonTypeSystem];

  8. retryButton.frame = CGRectMake(0, label.frame.origin.y + label.frame.size.height + 2

CYLTableViewPlaceHolder一行代码完成“空TableView占位视图”管理项目地址:https://gitcode.com/gh_mirrors/cy/CYLTableViewPlaceHolder

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...