IGInterfaceDataTable 0.1.0

IGInterfaceDataTable 0.1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 BSD
发布最后发布2015 年 4 月

Ryan Nystrom 维护。



IGInterfaceDataTable 是 WKInterfaceTable 上的一个类别,它使得配置具有多维度数据的表格更容易。您无需将数据结构扁平化成一个数组,而是可以使用类似于 UITableViewDataSource 的数据源模式来配置您的手表表格。

使用 IGInterfaceDataTable 构建具有复杂数据结构的精美 Apple Watch 应用程序,就像在 Instagram Apple Watch 应用程序中一样。

IGInterfaceDataTable

安装

您可以使用 CocoaPods 快速安装 IGInterfaceDataTable。将以下内容添加到您的 Podfile 中

pod 'IGInterfaceDataTable'

如果您愿意手动安装框架,只需将 WKInterfaceTable+IGInterfaceDataTable.hWKInterfaceTable+IGInterfaceDataTable.m 文件复制到您的 WatchKit 扩展目标的项目中即可。

导入框架头文件,或如果您使用的是 Swift,创建一个 Objective-C 桥接头

#import <IGInterfaceDataTable/IGInterfaceDataTable.h>

入门

为了开始使用 IGInterfaceDataTable,您只需将对象符合 IGInterfaceTableDataSource(定义如下此处)并将其设置为表格的 ig_dataSource

您需要实现两种方法以开始显示数据。第一个返回一个区段的行数。

- (NSInteger)numberOfRowsInTable:(WKInterfaceTable *)table section:(NSInteger)section {
    return self.items.count;
}

注意:如果您没有实现 numberOfSectionsInTable:,数据源默认只有一个区段。

另一个必需的方法返回在您的 WatchKit 故事板中配置的行控制器的 标识符

- (NSString *)table:(WKInterfaceTable *)table rowIdentifierAtIndexPath:(NSIndexPath *)indexPath {
    return @"RowIdentifier";
}

除了必需的方法之外,您还可以为 标题页脚甚至区段标题提供标识符。查看头文件文档,看看您可以做什么!

自定义行

IGInterfaceDataSource 提供了方便的方法,以在您重新加载或向 WKInterfaceTable 添加数据时更新您的行控制器。

以下方法会将表格中行的行控制器传递给数据源。然后,您可以自由地配置行,例如设置文本标签或添加图片。

- (void)table:(WKInterfaceTable *)table 
        configureRowController:(NSObject *)rowController 
        forIndexPath:(NSIndexPath *)indexPath {
    MyController *controller = (MyController *)rowController;
    [controller.textLabel setText:@"Hello!"];
}

还有配置标题、页脚和区段的方法。

便利

IGInterfaceDataSource 还提供了方法,使在 WKInterfaceTable 和您的数据结构之间进行桥接更加无缝。

例如,为了将行选择映射回您数据的索引路径,您需要调用 -[WKInterfaceTable indexPathFromRowIndex:]

- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex {
  NSIndexPath *indexPath = [table indexPathFromRowIndex:rowIndex];
  if (indexPath) {
    // do something with the index path or data
  }
}

或者,您可以直接滚动到某个部分,而无需查找数据的行索引

[table scrollToSection:section];

测试

由于 WKInterfaceTable 对象必须从 Storyboard 中初始化,并且尚未提供在代码中创建 WatchKit Storyboard 的机制,因此我们目前无法使用 Xcode 单元测试。

目前,测试是通过执行 ApplicationTests WatchKit 扩展并确保没有断言被触发来手动运行的。

贡献

请参阅 CONTRIBUTING 文件了解更多帮助信息。

许可

IGInterfaceDataTable 是采用 BSD 许可的。我们还提供额外的专利许可。