UITableView-DataSet 1.1

UITableView-DataSet 1.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

未认领 维护。



  • 作者:
  • dzenbot
(这些是实际示例,可在示例项目中找到)

空数据集模式

大多数应用程序会显示内容(数据集)的列表,这些列表往往在某些时候为空,特别是对于新用户和空白账户来说更是如此。空屏由于不明确说明发生了什么,如果存在错误/故障或者如果用户需要在您的应用内执行某些操作才能消费内容,因此会引起混淆。

空数据集 对于以下方面很有帮助:

  • 避免白屏并向用户说明为什么屏幕为空。
  • 呼唤行动(特别是作为新用户的引导流程)。
  • 避免其他干扰性机制,如显示错误警告。
  • 保持一致性和提高用户体验。
  • 展示品牌存在。

功能

  • 使用 KVO 来监控表格视图调用 -reloadData 的情况。
  • 通过显示图片、标题标签、描述标签或按钮,提供多种布局和外观选项。
  • 使用 NSAttributedString 来简化外观定制。
  • 使用自动布局自动将内容居中对齐到表格视图,并支持自动旋转。
  • 允许在整个表格视图范围内进行点击手势(用于放弃第一响应者或类似操作)。
  • 自定义背景颜色。
  • 支持 iPhone (3.5" & 4") 和 iPad。仅兼容 iOS7。
  • 支持 ARC 和 64位。

此库的设计方式无需使用扩展的 UITableView 类。在使用 UITableViewController 时仍然可用。通过简单实现数据源和代理协议,您就可以完全自定义应用中空数据集的内容和外观。

安装

可在 Cocoa Pods 中找到。

pod 'UITableView-DataSet'

如何使用

有关完整文档,请访问 CocoaPods 自动生成的文档

第1步:导入

#import "UITableView+DataSet.h"

步骤 2:协议遵从

遵从数据源和/或代表者。

@interface MainViewController : UITableViewController <DZNTableViewDataSetSource, DZNTableViewDataSetDelegate>

步骤 3:数据源实现

返回要在空数据集中显示的内容,并利用 NSAttributedString 功能来自定义文本外观。

数据集的标题。
- (NSAttributedString *)titleForTableViewDataSet:(UITableView *)tableView {

    NSString *text = @"Please Allow Photo Access";

    NSDictionary *attributes = @{NSFontAttributeName: [UIFont boldSystemFontOfSize:18.0],
                                 NSForegroundColorAttributeName: [UIColor darkGrayColor]};

    return [[NSAttributedString alloc] initWithString:text attributes:attributes];
}
数据集的描述。
- (NSAttributedString *)descriptionForTableViewDataSet:(UITableView *)tableView {

    NSString *text = @"This allows you to share photos from your library and save photos to your camera roll.";

    NSMutableParagraphStyle *paragraph = [NSMutableParagraphStyle new];
    paragraph.lineBreakMode = NSLineBreakByWordWrapping;
    paragraph.alignment = NSTextAlignmentCenter;

    NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:14.0],
                                 NSForegroundColorAttributeName: [UIColor lightGrayColor],
                                 NSParagraphStyleAttributeName: paragraph};

    return [[NSAttributedString alloc] initWithString:text attributes:attributes];                      
}
用于特定按钮状态的标题。
- (NSAttributedString *)buttonTitleForTableViewDataSet:(UITableView *)tableView forState:(UIControlState)state {

    NSDictionary *attributes = @{NSFontAttributeName: [UIFont boldSystemFontOfSize:17.0]

    return [[NSAttributedString alloc] initWithString:@"Continue" attributes:attributes];
}

步骤 4:代表者实现

返回对空数据集的预期行为,并接收用户事件。

请求交互权限。默认为是。
- (BOOL)tableViewDataSetShouldAllowTouch:(UITableView *)tableView {
    return YES;
}
请求滚动权限。默认为否。
- (BOOL)tableViewDataSetShouldAllowScroll:(UITableView *)tableView {
    return YES;
}
当数据集视图被点击时通知。
- (void)tableViewDataSetDidTapView:(UITableView *)tableView {

}
当数据集操作按钮被点击时通知。
- (void)tableViewDataSetDidTapButton:(UITableView *)tableView {

}

步骤 5:释放

在 viewcontroller 的 -dealloc 方法中将 dataSetSource 和 dataSetDelegate 设置为 nil 非常重要。因为此库在底层使用 KVO,当 tableview 准备释放时必须移除观察者。

- (void)dealloc
{
    self.tableView.dataSetSource = nil;
    self.tableView.dataSetDelegate = nil;
}

样例项目

应用程序

此样例项目复制了几种流行应用(约20个)的空数据集及其准确的内容和外观,如 Airbnb、Dropbox、Facebook、Foursquare 等。使用此项目了解自定义空数据集外观的简单性和灵活性。

国家

此其他样例项目展示了世界各个国家的列表。通过搜索,它自动补全,当没有内容匹配时,显示一个简单的空数据集。使用此项目更好地了解 UITableViewDataSource 和 DZNTableDataSetSource 协议之间的交互。

协作

我尝试构建了一个易于使用的 API,同时也足够灵活以应对多种变化,但我相信还有改进和添加更多功能的方法,所以请随时提出想法、问题或拉取请求进行合作。

许可

(MIT 许可证)

版权(c)2014 Ignacio Romero Zurbuchen [email protected]

特此授予任何人无条件的许可,免费获得此软件及其相关文档文件(以下简称“软件”)的副本,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件的人这样做,但前提是必须遵守以下条件:

上述版权声明和本许可声明应包括在软件的任何副本或实质部分中。

软件按“原样”提供,不提供任何形式的保证,无论明确表示还是暗示,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,无论因合同、侵权或其他原因而产生的索赔、损害或其他责任,作者或版权持有者均不承担任何责任,无论该索赔、损害或其他责任是否与软件或软件的使用或其他相关操作有关。