首先先展示有数据的时候。
下面要展示的数据。
-(void)setUpTgData{
// 1.获得plist的全路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"tgs.plist" ofType:nil];
// 2.加载数组
NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
self.tgs = [MJTg objectArrayWithKeyValuesArray:dictArray];
}
接下来把这句注掉
self.tgs = [MJTg objectArrayWithKeyValuesArray:dictArray];
好了 进入 正题了。
封装思路:
- 给tableView写一个分类,的实例方法
- 给该实例方法传一个没有数据的字符串,和一个数据源的个数(来判断有木有数据)
- 通过数据源的个数,来决定要不要横线。
- (void) tableViewDisplayWitMsg:(NSString *) message ifNecessaryForRowCount:(NSUInteger) rowCount
{
if (rowCount == 0) {
// 没有数据的时候,UILabel的显示样式
UILabel *messageLabel = [UILabel new];
messageLabel.text = message;
messageLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
messageLabel.textColor = [UIColor lightGrayColor];
label居中
messageLabel.textAlignment = NSTextAlignmentCenter;
[messageLabel sizeToFit];
self.backgroundView = messageLabel;
没有横线
self.separatorStyle = UITableViewCellSeparatorStyleNone;
} else {
self.backgroundView = nil;
有横线
self.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
}
}
好了 那怎么用它呢?
直接在控制器里面的数据源方法里面。调用这个方法。
#pragma mark - 数据源方法
/**
* 一共有多少行数据
*/
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
[tableView tableViewDisplayWitMsg:@"客官。没有数据" ifNecessaryForRowCount:self.tgs.count];
return self.tgs.count;
}
效果图如下
这样就OK了
现在随便一个tableView都可以用它,只要在头文件里面倒入
#import "UITableView+JFNoDataLabel.h"
这个分类 大功告成。
2015 - 11 - 12 上海