From a268a726bb74bc0f93baacf1a45e90391748954f Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Sun, 15 Nov 2015 19:29:30 +0300 Subject: [PATCH] readme updated --- README.md | 11 ++++++----- Tablet.podspec | 2 +- .../UserInterfaceState.xcuserstate | Bin 25546 -> 25548 bytes TabletDemo/TabletDemo/ViewController.swift | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 23d35e5..d23abe9 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ License: MIT

-Tablet is a super lightweight yet powerful generic library that handles a complexity of UITableView's datasource and delegate methods in a Swift environment. Tablet's goal is to provide an easiest way to create complex table views. With Tablet you don't have to write a messy code of switch or if statements when you deal with bunch of different cells in different sections. +Tablet is a super lightweight yet powerful generic library that handles a complexity of UITableView's datasource and delegate methods in a Swift environment. Tablet's goal is to provide an easiest way to create complex table views. With Tablet you don't have to write a messy code of `switch` or `if` statements when you deal with bunch of different cells in different sections. That's almost all you need in your controller to build a bunch of cells in a section: ```swift @@ -89,7 +89,7 @@ Once you've implemented the protocol, simply use the `TableConfigurableRowBuilde ```swift import Tablet -let rowBuilder = TableConfigurableRowBuilder() +let rowBuilder = TableConfigurableRowBuilder(estimatedRowHeight: 42) rowBuilder.appendItems(users) director = TableDirector(tableView: tableView) @@ -159,17 +159,18 @@ extension TableDirector { public func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { - performAction(.custom(kTableDirectordidEndDisplayingCell), cell: cell, indexPath: indexPath) + performAction(.custom(kTableDirectorDidEndDisplayingCell), cell: cell, indexPath: indexPath) } } ``` Catch your action with row builder: ```swift -let rowBuilder = TableConfigurableRowBuilder(items: users) - .action(kTableDirectordidEndDisplayingCell) { data in +let rowBuilder = TableConfigurableRowBuilder(items: users, estimatedRowHeight: 42) + .action(kTableDirectorDidEndDisplayingCell) { data in } ``` +You could also perform an action that returns a value. ## License diff --git a/Tablet.podspec b/Tablet.podspec index 5d4d01f..de7a9f9 100644 --- a/Tablet.podspec +++ b/Tablet.podspec @@ -3,7 +3,7 @@ Pod::Spec.new do |s| s.version = '0.1.0' s.homepage = 'https://github.com/maxsokolov/tablet' - s.summary = 'Tablet is a super lightweight yet powerful Swift library that handles a complexity of UITableView's datasource and delegate.' + s.summary = 'Powerful type-safe tool for UITableView. Swift 2.0 is required.' s.author = { 'Max Sokolov' => 'i@maxsokolov.net' } s.license = { :type => 'MIT', :file => 'LICENSE' } diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate index fe7b4a04a38e9e02e3850aadfc1a2659c7d4146f..37a26d591729787b08719fcdb0e923493a543e62 100644 GIT binary patch delta 4484 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 delta 4567 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

kB&llxG`I3BD ferbL<|NZ Void in - data.cell!.contentLabel.text = "With iOS 8, Apple has internalized much of the work that previously had to be implemented by you prior to iOS 8. In order to allow the self-sizing cell mechanism to work, you must first set the rowHeight property on the table view to the constant UITableViewAutomaticDimension. Then, you simply need to enable row height estimation by setting the table view's estimatedRowHeight property to a nonzero value, for example" + data.cell!.contentLabel.text = "Tablet is a super lightweight yet powerful generic library that handles a complexity of UITableView's datasource and delegate methods in a Swift environment. Tablet's goal is to provide an easiest way to create complex table views. With Tablet you don't have to write a messy code of switch or if statements when you deal with bunch of different cells in different sections." } let sectionBuilder = TableSectionBuilder(headerTitle: "Tablet", footerTitle: "Deal with table view like a boss.", rowBuilders: [rowBuilder, configurableRowBuilder])