ATTableView 1.2

ATTableView 1.2

测试已测试
Lang语言 SwiftSwift
许可 MIT
Released最新发布2016年2月
SPM支持 SPM

Tuan Phung 维护。



ATTableView

为智能开发者提供的一种方便处理 UITableViewDataSource 和 UITableViewDelegate 的方法。

为什么使用 ATTableView?

你实现 UITableViewDataSource 和 UITableViewDelegate 的次数有多少?
这很无聊吗?在一个 TableView 中如何处理不同的 UITableViewCell?

既然你是聪明的,那么你也需要一种智能的方法。
ATTableView 就是为了你,它能够在 UITableView 中轻松显示模型。并且支持不同的 UITableViewCell。

传统方法

alt tag

所以现在

  • 不需要实现 UITableViewDataSource 和 UITableViewDelegate 的任何方法。大部分应该在 UITableViewCell 中完成。
  • 重用 UITableViewCell 非常简单。
  • مدتون توسط ATTableView مدیریت می‌شوند، نه توسط ViewController.
  • 显示基于模型类型的 UITableViewCell 无需麻烦。设置后, فقط مدل‌های محتوا را به ATTableView ارسال کنید، سپس سلول به طور خودکار مدل‌ها را انتخاب کرده و آن‌ها را نمایش خواهد داد.

懒散方式

alt tag

所以现在

  • 不需要实现 UITableViewDataSource 和 UITableViewDelegate 的任何方法。大部分应该是在 UITableViewCell 中完成。
  • ظرفیت تجدید UITableViewCell بسیار بالاست.
  • مدل‌ها توسط ATTableView، نه توسط ViewController، مدیریت می‌شوند.
  • اجازه می‌دهد تا بدون دردسر TableViewCells را بر اساس نوع مدل نمایش دهد. پس از برخی تنظیمات، فقط مدل‌ها را به ATTableView بفرستید، سپس سلول به طور خودکار مدل‌ها را انتخاب کرده و آن‌ها را نمایش خواهد داد.
  • پشتیبانی از Generic و Associated types. بنابراین نیازی به Cast نوع نیست.

مقدمه بر ATTableViewCellProtocol

public protocol ATTableViewCellProtocol: NSObjectProtocol {
    typealias ModelType

    // Optional, default is ClassName
    static func reuseIdentifier() -> String

    // Optional, default is ClassName
    static func nibName() -> String?

    // Optional, default is `UITableViewAutomaticDimension`
    static func height(model: ModelType) -> CGFloat

    // Define how to map properties of model to UI.
    // This method must be implemented.
    func configureCell(model: ModelType)
}

ATTableView نیاز به برخی از پیاده‌سازی‌ها در سلول شما دارد، بنابراین سلول شما باید این پروتکل را پیاده‌سازی کند.

  • نیازی به پیاده‌سازی همه چیز نیست، برخی از روش‌ها دارای پیاده‌سازی پیش‌فرض هستند.
  • نیازی به Cast نوع نیست. ModelType بر اساس تعریف شماست.

پروژه نمونه

یک پروژه نمونه در پوشه Demo وجود دارد. یا می‌توانید دستورالعمل‌ها را در اینجا دنبال کنید اینجا.
انjoy!

استفاده

پس از چندین تنظیم، استفاده از ATTableView واقعاً ساده است. در ViewController خود، فقط مراحل زیر را دنبال کنید

1. سلول‌های خود را ثبت کنید

self.tableView.register(RestaurantTableViewCell.self)
self.tableView.register(HotelTableViewCell.self)

2. مدل‌های خود را ارسال کنید

let restaurant = Restaurant()
... // Some extra initializions

let hotel = Hotel()
... // Some extra initializions

self.tableView.addItems([restaurant, hotel])

3. از آن لذت ببرید!

alt tag

处理单元格点击事件

就像这样简单

self.tableView.onDidSelectItem = { [weak self] item in
    // Handle selected item here
    ...
}

从网络渐进加载模型

即将推出…

需求

  • iOS 8.0+ / Mac OS X 10.9+
  • Xcode 6.4

安装

CocoaPods 是 Cocoa 项目的依赖管理器。

CocoaPods 0.36 添加了对 Swift 和内嵌框架的支持。您可以使用以下命令进行安装

$ gem install cocoapods

要用 CocoaPods 将 ATTableView 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'ATTableView', '1.1'

然后,运行以下命令

$ pod install

许可证

ATTableView 在 MIT 许可下发布。有关详细信息,请参阅 LICENSE。