DJTableViewVM 1.6.1

DJTableViewVM 1.6.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2019年6月

Dokay Dou维护。



  • 作者:
  • Dokay

DJTableViewVM

License MIT Pod version Carthage Compatible Platform info

是什么

DJTableViewVM是一个轻量级的MVVM解决方案,用于使用UITableView完成您的页面。

功能

  • 使用UITableView实现页面时,代码更少且更灵活;
  • 易于控制单元格行;
  • 支持iOS 10及以下版本的预取;
  • 动态计算单元格高度;
  • 预计算单元格高度;
  • 键盘显示和隐藏时自动滚动;
  • tableViewVM显示;

需求

  • Xcode 9或更高版本
  • Apple LLVM编译器
  • iOS 8.0或更高版本
  • ARC

演示

在 Xcode 中构建并运行 DJComponentTableViewVM.xcodeproj

安装

CocoaPods

编辑您的 Podfile 并添加 DJTableViewVM

pod 'DJTableViewVM'

Carthage

编辑您的 Cartfile 并添加 DJTableViewVM

github "Dokay/DJTableViewVM"

快速入门

  • 示例代码
- (void)testTextRowAutoLayoutWithNib
{
    DJTableViewRegister(self.aDJTableViewVM, DJTableViewVMTextTestRow, DJTableViewVMTextTestCell);

    [self.aDJTableViewVM removeAllSections];

    for (int j = 0; j < 20; j++) {
        DJTableViewVMSection *section = [DJTableViewVMSection sectionWithHeaderTitle:@"AutoLayoutWithNib"];
        [self.aDJTableViewVM addSection:section];
        for (int i  = 0; i < 100; i ++) {
            DJTableViewVMTextTestRow *row = [DJTableViewVMTextTestRow new];
            row.contentText = @"This is a test content";
            __weak ViewController *weakSelf = self;
            [row setSelectionHandler:^(DJTableViewVMRow *rowVM) {
                [rowVM deselectRowAnimated:YES];
                [weakSelf testTable];
            }];
        [section addRow:row];
        }
    }
    [self.aDJTableViewVM reloadData];
}
  • 设置默认样式
    [DJTableViewVMRow defaultStyleInstance].titleFont = [UIFont systemFontOfSize:18];

关键类

  • DJTableViewVM:UITableView 的 ViewModel。它实现了 UITableViewDelegate & UITableViewDataSource,并有多个 DJTableViewVMSection 部分。

  • DJTableViewVMSection:DJTableViewVM 中部分的 ViewModel,每个部分包含多个 DJTableViewVMRow 行。

  • DJTableViewVMRow:部分中的行的 ViewModel,它具有与单元格相关联的属性。

  • DJTableViewVMCell:DJTableViewVMRow(ViewModel)的单元格(View),它定义了出现在 UITableViewDataSource 中的属性和行为。

  • DJTableViewVMCellProtocol:与 DJTableViewVMRow 相关的单元格协议,DJTableViewVMCell 实现了该协议,如果您不想或无法继承 DJTableViewVMCell,只需实现该协议。

  • DJInputRow协议:所有输入单元(如包含UITextField/UITextView/UIDataPicker的单元)实现的协议。DJTableViewVMTextFieldRow和DJTableViewVMTextViewRow实现了它。您可以在单元中为您的输入视图实现它。

  • DJPicker协议:所有选择单元(如包含UIDatePicker/UIPickerView的单元)实现的协议。DJNormalPickerDelegate和DJRelatedPickerDelegate实现了它。您可以在单元中的选择视图中实现它。

  • 关于您项目中的现有单元:
    1. 如果您的单元的父类是UITableViewCell,只需将其更改为DJTableViewVMCell。
    2. 如果您的单元的父类是您的自定义类,您需要实现协议DJTableViewVMCellDelegate或将它更改为DJTableViewVMCell。

DJCollectionViewVM

UICollectionView的ViewModel:DJCollectionViewVM

联系

Dokay Dou

许可证

DJTableViewVM在MIT许可证下可用。