From 51de86c81a4fc5d5a57685dfd93d59a45d46eee6 Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Sat, 11 Jun 2016 00:51:10 +0300 Subject: [PATCH] rename to TableKit Thanks a lot to my greatest friend, Alexander Nikishin --- .travis.yml | 2 +- README.md | 179 +------ Tablet.podspec => TableKit.podspec | 14 +- .../contents.xcworkspacedata | 4 +- {Tablet => TableKit}/ConfigurableCell.swift | 0 {Tablet => TableKit}/HeightStrategy.swift | 0 {Tablet => TableKit}/Info.plist | 0 {Tablet => TableKit}/Operators.swift | 0 {Tablet => TableKit}/TableDirector.swift | 0 TableKit/TableKit.h | 19 + TableKit/TableKit.xcodeproj/project.pbxproj | 335 +++++++++++++ {Tablet => TableKit}/TableRow.swift | 0 {Tablet => TableKit}/TableRowAction.swift | 0 {Tablet => TableKit}/TableRowBuilder.swift | 0 {Tablet => TableKit}/TableSection.swift | 0 {Tablet => TableKit}/Tablet.swift | 0 .../Classes/Application/AppDelegate.swift | 0 .../Controllers/HeaderFooterController.swift | 2 +- .../Controllers/MainController.swift | 2 +- .../Views/StoryboardImageTableViewCell.swift | 2 +- .../Views/StoryboardTableViewCell.swift | 2 +- .../AppIcon.appiconset/Contents.json | 0 .../Resources/Info.plist | 0 .../Storyboards/LaunchScreen.storyboard | 0 .../Resources/Storyboards/Main.storyboard | 0 .../TableKitDemo.xcodeproj/project.pbxproj | 362 ++++++++++++++ .../contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin 21675 -> 0 bytes Tablet/Tablet.h | 24 - Tablet/Tablet.xcodeproj/project.pbxproj | 443 ------------------ .../UserInterfaceState.xcuserstate | Bin 19773 -> 0 bytes .../xcshareddata/xcschemes/Tablet.xcscheme | 99 ---- .../xcschemes/xcschememanagement.plist | 19 - .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 - .../xcschemes/xcschememanagement.plist | 27 -- .../project.pbxproj | 6 +- .../contents.xcworkspacedata | 2 +- .../UserInterfaceState.xcuserstate | Bin 17117 -> 0 bytes .../UserInterfaceState.xcuserstate | Bin 35030 -> 0 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 - .../xcschemes/TabletDemo.xcscheme | 91 ---- .../xcschemes/xcschememanagement.plist | 22 - .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 - .../xcschemes/TabletDemo.xcscheme | 101 ---- .../xcschemes/xcschememanagement.plist | 27 -- 45 files changed, 738 insertions(+), 1061 deletions(-) rename Tablet.podspec => TableKit.podspec (54%) rename {Tablet.xcworkspace => TableKit.xcworkspace}/contents.xcworkspacedata (53%) rename {Tablet => TableKit}/ConfigurableCell.swift (100%) rename {Tablet => TableKit}/HeightStrategy.swift (100%) rename {Tablet => TableKit}/Info.plist (100%) rename {Tablet => TableKit}/Operators.swift (100%) rename {Tablet => TableKit}/TableDirector.swift (100%) create mode 100644 TableKit/TableKit.h create mode 100644 TableKit/TableKit.xcodeproj/project.pbxproj rename {Tablet => TableKit}/TableRow.swift (100%) rename {Tablet => TableKit}/TableRowAction.swift (100%) rename {Tablet => TableKit}/TableRowBuilder.swift (100%) rename {Tablet => TableKit}/TableSection.swift (100%) rename {Tablet => TableKit}/Tablet.swift (100%) rename {TabletDemo => TableKitDemo}/Classes/Application/AppDelegate.swift (100%) rename {TabletDemo => TableKitDemo}/Classes/Presentation/Controllers/HeaderFooterController.swift (98%) rename {TabletDemo => TableKitDemo}/Classes/Presentation/Controllers/MainController.swift (99%) rename {TabletDemo => TableKitDemo}/Classes/Presentation/Views/StoryboardImageTableViewCell.swift (98%) rename {TabletDemo => TableKitDemo}/Classes/Presentation/Views/StoryboardTableViewCell.swift (95%) rename {TabletDemo => TableKitDemo}/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {TabletDemo => TableKitDemo}/Resources/Info.plist (100%) rename {TabletDemo => TableKitDemo}/Resources/Storyboards/LaunchScreen.storyboard (100%) rename {TabletDemo => TableKitDemo}/Resources/Storyboards/Main.storyboard (100%) create mode 100644 TableKitDemo/TableKitDemo.xcodeproj/project.pbxproj rename {TabletDemo/TabletDemo.xcodeproj => TableKitDemo/TableKitDemo.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%) delete mode 100644 Tablet.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 Tablet/Tablet.h delete mode 100644 Tablet/Tablet.xcodeproj/project.pbxproj delete mode 100644 Tablet/Tablet.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 Tablet/Tablet.xcodeproj/xcshareddata/xcschemes/Tablet.xcscheme delete mode 100644 Tablet/Tablet.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist rename TabletDemo/{TabletDemo.xcodeproj => TableKitDemo.xcodeproj}/project.pbxproj (95%) rename {Tablet/Tablet.xcodeproj => TabletDemo/TableKitDemo.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (70%) delete mode 100644 TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/TabletDemo.xcscheme delete mode 100644 TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/TabletDemo.xcscheme delete mode 100644 TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.travis.yml b/.travis.yml index 99f321d..f57eb70 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,4 +8,4 @@ before_install: - brew reinstall --HEAD xctool - cd Tablet script: - - xctool clean build test -project Tablet.xcodeproj -scheme Tablet -sdk iphonesimulator \ No newline at end of file + - xctool clean build test -project TableKit.xcodeproj -scheme TableKit -sdk iphonesimulator \ No newline at end of file diff --git a/README.md b/README.md index c543553..c9c36fd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -![Alamofire: Elegant Networking in Swift](https://raw.githubusercontent.com/maxsokolov/tablet/assets/logo.png) +![TableKit](https://raw.githubusercontent.com/maxsokolov/tablekit/assets/logo.png) -#Tablet.swift +#TableKit

Build Status @@ -10,7 +10,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. +TableKit 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. ## Features @@ -24,179 +24,6 @@ Tablet is a super lightweight yet powerful generic library that handles a comple - [x] Extensibility - [x] Tests -That's almost all you need to build a bunch of cells in a section: -```swift -let builder = TableRowBuilder(items: ["1", "2", "3", "4", "5"]) -``` -Tablet relies on self-sizing table view cells, respects cells reusability feature and also built with performace in mind. You don't have to worry about anything, just create your cells, setup autolayout constraints and be happy. See the Usage section to learn more. - -## Requirements - -- iOS 8.0+ -- Xcode 7.0+ -- Swift 2.2 - -## Installation - -### CocoaPods -To integrate Tablet into your Xcode project using CocoaPods, specify it in your `Podfile`: - -```ruby -source 'https://github.com/CocoaPods/Specs.git' -platform :ios, '8.0' -use_frameworks! - -pod 'Tablet' -``` - -Then, run the following command: - -```bash -$ pod install -``` - -## Usage - -### Type-safe configurable cells - -Let's say you want to put your cell configuration logic into cell itself. Say you want to pass your view model (or even model) to your cell. -You could easily do this using the `TableRowBuilder`. Your cell should conforms to `ConfigurableCell` protocol as you may see in example below: - -```swift -import Tablet - -class MyTableViewCell : UITableViewCell, ConfigurableCell { - - typealias T = User - - // this method is not required to be implemented if your cell's id equals to class name - static func reusableIdentifier() -> String { - return "reusable_id" - } - - static func estimatedHeight() -> Float { - return 255 - } - - func configure(item: T) { // item is user here - - textLabel?.text = item.username - detailTextLabel?.text = item.isActive ? "Active" : "Inactive" - } -} -``` -Once you've implemented the protocol, simply use the `TableRowBuilder` to build cells: - -```swift -import Tablet - -let rowBuilder = TableRowBuilder() -rowBuilder += users - -director = TableDirector(tableView: tableView) -tableDirector += TableSectionBuilder(rows: [rowBuilder]) -``` - -### Very basic table view - -You may want to setup a very basic table view, without any custom cells. In that case simply use the `TableBaseRowBuilder`. - -```swift -import Tablet - -let rowBuilder = TableBaseRowBuilder(items: [user1, user2, user3], id: "reusable_id") - .action(.configure) { (data) in - - data.cell?.textLabel?.text = data.item.username - data.cell?.detailTextLabel?.text = data.item.isActive ? "Active" : "Inactive" - } - -let sectionBuilder = TableSectionBuilder(headerTitle: "Users", footerTitle: nil, rows: [rowBuilder]) - -director = TableDirector(tableView: tableView) -director += sectionBuilder -``` - -### Cell actions - -Tablet provides a chaining approach to handle actions from your cells: - -```swift -import Tablet - -let rowBuilder = TableRowBuilder(items: [user1, user2, user3], id: "reusable_id") - .action(.configure) { (data) in - - } - .action(.click) { (data) in - - } - .valueAction(.shouldHighlight) { (data) in - - return false - } -``` - -### Custom cell actions -```swift -import Tablet - -struct MyCellActions { - static let ButtonClicked = "ButtonClicked" -} - -class MyTableViewCell : UITableViewCell { - - @IBAction func buttonClicked(sender: UIButton) { - - Action(key: MyCellActions.ButtonClicked, sender: self, userInfo: nil).invoke() - } -} -``` -And receive this actions with your row builder: -```swift -import Tablet - -let rowBuilder = TableRowBuilder(items: users) - .action(.click) { (data) in - - } - .action(.willDisplay) { (data) in - - } - .action(MyCellActions.ButtonClicked) { (data) in - - } -``` - -## Extensibility - -If you find that Tablet is not provide an action you need, for example you need UITableViewDelegate's `didEndDisplayingCell` method and it's not out of the box, -simply provide an extension for `TableDirector`: -```swift -import Tablet - -struct MyTableActions { - static let DidEndDisplayingCell = "DidEndDisplayingCell" -} - -extension TableDirector { - - public func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { - - invoke(action: .custom(MyTableActions.DidEndDisplayingCell), cell: cell, indexPath: indexPath) - } -} -``` -Catch your action with row builder: -```swift -let rowBuilder = TableRowBuilder(items: users) - .action(MyTableActions.DidEndDisplayingCell) { (data) -> Void in - - } -``` -You could also invoke an action that returns a value. - ## License Tablet is available under the MIT license. See LICENSE for details. \ No newline at end of file diff --git a/Tablet.podspec b/TableKit.podspec similarity index 54% rename from Tablet.podspec rename to TableKit.podspec index c5be448..cdabc6c 100644 --- a/Tablet.podspec +++ b/TableKit.podspec @@ -1,17 +1,17 @@ Pod::Spec.new do |s| - s.name = 'Tablet' - s.module_name = 'Tablet' + s.name = 'TableKit' + s.module_name = 'TableKit' - s.version = '0.5.0' + s.version = '0.6.0' - s.homepage = 'https://github.com/maxsokolov/Tablet.swift' - s.summary = 'Powerful type-safe tool for UITableView. Swift 2.2 is required.' + s.homepage = 'https://github.com/maxsokolov/TableKit' + s.summary = 'Type-safe declarative table views. Swift 2.2 is required.' s.author = { 'Max Sokolov' => 'i@maxsokolov.net' } s.license = { :type => 'MIT', :file => 'LICENSE' } s.platforms = { :ios => '8.0' } s.ios.deployment_target = '8.0' - s.source_files = 'Tablet/*.swift' - s.source = { :git => 'https://github.com/maxsokolov/Tablet.swift.git', :tag => s.version } + s.source_files = 'TableKit/*.swift' + s.source = { :git => 'https://github.com/maxsokolov/TableKit.git', :tag => s.version } end \ No newline at end of file diff --git a/Tablet.xcworkspace/contents.xcworkspacedata b/TableKit.xcworkspace/contents.xcworkspacedata similarity index 53% rename from Tablet.xcworkspace/contents.xcworkspacedata rename to TableKit.xcworkspace/contents.xcworkspacedata index 8a2fad4..134624f 100644 --- a/Tablet.xcworkspace/contents.xcworkspacedata +++ b/TableKit.xcworkspace/contents.xcworkspacedata @@ -2,9 +2,9 @@ + location = "group:TableKit/TableKit.xcodeproj"> + location = "group:TableKitDemo/TableKitDemo.xcodeproj"> diff --git a/Tablet/ConfigurableCell.swift b/TableKit/ConfigurableCell.swift similarity index 100% rename from Tablet/ConfigurableCell.swift rename to TableKit/ConfigurableCell.swift diff --git a/Tablet/HeightStrategy.swift b/TableKit/HeightStrategy.swift similarity index 100% rename from Tablet/HeightStrategy.swift rename to TableKit/HeightStrategy.swift diff --git a/Tablet/Info.plist b/TableKit/Info.plist similarity index 100% rename from Tablet/Info.plist rename to TableKit/Info.plist diff --git a/Tablet/Operators.swift b/TableKit/Operators.swift similarity index 100% rename from Tablet/Operators.swift rename to TableKit/Operators.swift diff --git a/Tablet/TableDirector.swift b/TableKit/TableDirector.swift similarity index 100% rename from Tablet/TableDirector.swift rename to TableKit/TableDirector.swift diff --git a/TableKit/TableKit.h b/TableKit/TableKit.h new file mode 100644 index 0000000..c63484c --- /dev/null +++ b/TableKit/TableKit.h @@ -0,0 +1,19 @@ +// +// TableKit.h +// TableKit +// +// Created by Max Sokolov on 11/06/16. +// Copyright © 2016 Max Sokolov. All rights reserved. +// + +#import + +//! Project version number for TableKit. +FOUNDATION_EXPORT double TableKitVersionNumber; + +//! Project version string for TableKit. +FOUNDATION_EXPORT const unsigned char TableKitVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/TableKit/TableKit.xcodeproj/project.pbxproj b/TableKit/TableKit.xcodeproj/project.pbxproj new file mode 100644 index 0000000..bf9dc87 --- /dev/null +++ b/TableKit/TableKit.xcodeproj/project.pbxproj @@ -0,0 +1,335 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + DA9EA7711D0B68460021F650 /* ConfigurableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA9EA7681D0B68460021F650 /* ConfigurableCell.swift */; }; + DA9EA7721D0B68460021F650 /* HeightStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA9EA7691D0B68460021F650 /* HeightStrategy.swift */; }; + DA9EA7731D0B68460021F650 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA9EA76A1D0B68460021F650 /* Operators.swift */; }; + DA9EA7741D0B68460021F650 /* TableDirector.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA9EA76B1D0B68460021F650 /* TableDirector.swift */; }; + DA9EA7751D0B68460021F650 /* TableRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA9EA76C1D0B68460021F650 /* TableRow.swift */; }; + DA9EA7761D0B68460021F650 /* TableRowAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA9EA76D1D0B68460021F650 /* TableRowAction.swift */; }; + DA9EA7771D0B68460021F650 /* TableRowBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA9EA76E1D0B68460021F650 /* TableRowBuilder.swift */; }; + DA9EA7781D0B68460021F650 /* TableSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA9EA76F1D0B68460021F650 /* TableSection.swift */; }; + DA9EA7791D0B68460021F650 /* Tablet.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA9EA7701D0B68460021F650 /* Tablet.swift */; }; + DA9EA7801D0B689C0021F650 /* TableKit.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9EA77E1D0B689C0021F650 /* TableKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DA9EA7561D0B679A0021F650 /* TableKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TableKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DA9EA7681D0B68460021F650 /* ConfigurableCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfigurableCell.swift; sourceTree = ""; }; + DA9EA7691D0B68460021F650 /* HeightStrategy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeightStrategy.swift; sourceTree = ""; }; + DA9EA76A1D0B68460021F650 /* Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Operators.swift; sourceTree = ""; }; + DA9EA76B1D0B68460021F650 /* TableDirector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableDirector.swift; sourceTree = ""; }; + DA9EA76C1D0B68460021F650 /* TableRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableRow.swift; sourceTree = ""; }; + DA9EA76D1D0B68460021F650 /* TableRowAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableRowAction.swift; sourceTree = ""; }; + DA9EA76E1D0B68460021F650 /* TableRowBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableRowBuilder.swift; sourceTree = ""; }; + DA9EA76F1D0B68460021F650 /* TableSection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableSection.swift; sourceTree = ""; }; + DA9EA7701D0B68460021F650 /* Tablet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tablet.swift; sourceTree = ""; }; + DA9EA77D1D0B689C0021F650 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DA9EA77E1D0B689C0021F650 /* TableKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableKit.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DA9EA7521D0B679A0021F650 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DA9EA74C1D0B679A0021F650 = { + isa = PBXGroup; + children = ( + DA9EA7671D0B68340021F650 /* Classes */, + DA9EA7571D0B679A0021F650 /* Products */, + DA9EA77C1D0B68860021F650 /* Supporting Files */, + ); + sourceTree = ""; + }; + DA9EA7571D0B679A0021F650 /* Products */ = { + isa = PBXGroup; + children = ( + DA9EA7561D0B679A0021F650 /* TableKit.framework */, + ); + name = Products; + sourceTree = ""; + }; + DA9EA7671D0B68340021F650 /* Classes */ = { + isa = PBXGroup; + children = ( + DA9EA7681D0B68460021F650 /* ConfigurableCell.swift */, + DA9EA7691D0B68460021F650 /* HeightStrategy.swift */, + DA9EA76A1D0B68460021F650 /* Operators.swift */, + DA9EA76B1D0B68460021F650 /* TableDirector.swift */, + DA9EA76C1D0B68460021F650 /* TableRow.swift */, + DA9EA76D1D0B68460021F650 /* TableRowAction.swift */, + DA9EA76E1D0B68460021F650 /* TableRowBuilder.swift */, + DA9EA76F1D0B68460021F650 /* TableSection.swift */, + DA9EA7701D0B68460021F650 /* Tablet.swift */, + ); + name = Classes; + sourceTree = ""; + }; + DA9EA77C1D0B68860021F650 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + DA9EA77D1D0B689C0021F650 /* Info.plist */, + DA9EA77E1D0B689C0021F650 /* TableKit.h */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + DA9EA7531D0B679A0021F650 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + DA9EA7801D0B689C0021F650 /* TableKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + DA9EA7551D0B679A0021F650 /* TableKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = DA9EA75E1D0B679A0021F650 /* Build configuration list for PBXNativeTarget "TableKit" */; + buildPhases = ( + DA9EA7511D0B679A0021F650 /* Sources */, + DA9EA7521D0B679A0021F650 /* Frameworks */, + DA9EA7531D0B679A0021F650 /* Headers */, + DA9EA7541D0B679A0021F650 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TableKit; + productName = TableKit; + productReference = DA9EA7561D0B679A0021F650 /* TableKit.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DA9EA74D1D0B679A0021F650 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = "Max Sokolov"; + TargetAttributes = { + DA9EA7551D0B679A0021F650 = { + CreatedOnToolsVersion = 7.3; + }; + }; + }; + buildConfigurationList = DA9EA7501D0B679A0021F650 /* Build configuration list for PBXProject "TableKit" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = DA9EA74C1D0B679A0021F650; + productRefGroup = DA9EA7571D0B679A0021F650 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DA9EA7551D0B679A0021F650 /* TableKit */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DA9EA7541D0B679A0021F650 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DA9EA7511D0B679A0021F650 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DA9EA7711D0B68460021F650 /* ConfigurableCell.swift in Sources */, + DA9EA7721D0B68460021F650 /* HeightStrategy.swift in Sources */, + DA9EA7781D0B68460021F650 /* TableSection.swift in Sources */, + DA9EA7751D0B68460021F650 /* TableRow.swift in Sources */, + DA9EA7761D0B68460021F650 /* TableRowAction.swift in Sources */, + DA9EA7741D0B68460021F650 /* TableDirector.swift in Sources */, + DA9EA7771D0B68460021F650 /* TableRowBuilder.swift in Sources */, + DA9EA7791D0B68460021F650 /* Tablet.swift in Sources */, + DA9EA7731D0B68460021F650 /* Operators.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + DA9EA75C1D0B679A0021F650 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + DA9EA75D1D0B679A0021F650 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + DA9EA75F1D0B679A0021F650 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablekit.TableKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DA9EA7601D0B679A0021F650 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablekit.TableKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DA9EA7501D0B679A0021F650 /* Build configuration list for PBXProject "TableKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DA9EA75C1D0B679A0021F650 /* Debug */, + DA9EA75D1D0B679A0021F650 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DA9EA75E1D0B679A0021F650 /* Build configuration list for PBXNativeTarget "TableKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DA9EA75F1D0B679A0021F650 /* Debug */, + DA9EA7601D0B679A0021F650 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DA9EA74D1D0B679A0021F650 /* Project object */; +} diff --git a/Tablet/TableRow.swift b/TableKit/TableRow.swift similarity index 100% rename from Tablet/TableRow.swift rename to TableKit/TableRow.swift diff --git a/Tablet/TableRowAction.swift b/TableKit/TableRowAction.swift similarity index 100% rename from Tablet/TableRowAction.swift rename to TableKit/TableRowAction.swift diff --git a/Tablet/TableRowBuilder.swift b/TableKit/TableRowBuilder.swift similarity index 100% rename from Tablet/TableRowBuilder.swift rename to TableKit/TableRowBuilder.swift diff --git a/Tablet/TableSection.swift b/TableKit/TableSection.swift similarity index 100% rename from Tablet/TableSection.swift rename to TableKit/TableSection.swift diff --git a/Tablet/Tablet.swift b/TableKit/Tablet.swift similarity index 100% rename from Tablet/Tablet.swift rename to TableKit/Tablet.swift diff --git a/TabletDemo/Classes/Application/AppDelegate.swift b/TableKitDemo/Classes/Application/AppDelegate.swift similarity index 100% rename from TabletDemo/Classes/Application/AppDelegate.swift rename to TableKitDemo/Classes/Application/AppDelegate.swift diff --git a/TabletDemo/Classes/Presentation/Controllers/HeaderFooterController.swift b/TableKitDemo/Classes/Presentation/Controllers/HeaderFooterController.swift similarity index 98% rename from TabletDemo/Classes/Presentation/Controllers/HeaderFooterController.swift rename to TableKitDemo/Classes/Presentation/Controllers/HeaderFooterController.swift index 47c030d..6c8d62f 100644 --- a/TabletDemo/Classes/Presentation/Controllers/HeaderFooterController.swift +++ b/TableKitDemo/Classes/Presentation/Controllers/HeaderFooterController.swift @@ -7,7 +7,7 @@ // import UIKit -import Tablet +import TableKit class HeaderFooterController: UIViewController { diff --git a/TabletDemo/Classes/Presentation/Controllers/MainController.swift b/TableKitDemo/Classes/Presentation/Controllers/MainController.swift similarity index 99% rename from TabletDemo/Classes/Presentation/Controllers/MainController.swift rename to TableKitDemo/Classes/Presentation/Controllers/MainController.swift index 0a803a5..9a2f174 100644 --- a/TabletDemo/Classes/Presentation/Controllers/MainController.swift +++ b/TableKitDemo/Classes/Presentation/Controllers/MainController.swift @@ -7,7 +7,7 @@ // import UIKit -import Tablet +import TableKit class MainController: UIViewController { diff --git a/TabletDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift b/TableKitDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift similarity index 98% rename from TabletDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift rename to TableKitDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift index 45bf5b6..c809967 100644 --- a/TabletDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift +++ b/TableKitDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift @@ -7,7 +7,7 @@ // import UIKit -import Tablet +import TableKit class StoryboardImageTableViewCell: UITableViewCell, ConfigurableCell { diff --git a/TabletDemo/Classes/Presentation/Views/StoryboardTableViewCell.swift b/TableKitDemo/Classes/Presentation/Views/StoryboardTableViewCell.swift similarity index 95% rename from TabletDemo/Classes/Presentation/Views/StoryboardTableViewCell.swift rename to TableKitDemo/Classes/Presentation/Views/StoryboardTableViewCell.swift index 1f06499..8180860 100644 --- a/TabletDemo/Classes/Presentation/Views/StoryboardTableViewCell.swift +++ b/TableKitDemo/Classes/Presentation/Views/StoryboardTableViewCell.swift @@ -7,7 +7,7 @@ // import UIKit -import Tablet +import TableKit class StoryboardTableViewCell: UITableViewCell, ConfigurableCell { diff --git a/TabletDemo/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json b/TableKitDemo/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from TabletDemo/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json rename to TableKitDemo/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/TabletDemo/Resources/Info.plist b/TableKitDemo/Resources/Info.plist similarity index 100% rename from TabletDemo/Resources/Info.plist rename to TableKitDemo/Resources/Info.plist diff --git a/TabletDemo/Resources/Storyboards/LaunchScreen.storyboard b/TableKitDemo/Resources/Storyboards/LaunchScreen.storyboard similarity index 100% rename from TabletDemo/Resources/Storyboards/LaunchScreen.storyboard rename to TableKitDemo/Resources/Storyboards/LaunchScreen.storyboard diff --git a/TabletDemo/Resources/Storyboards/Main.storyboard b/TableKitDemo/Resources/Storyboards/Main.storyboard similarity index 100% rename from TabletDemo/Resources/Storyboards/Main.storyboard rename to TableKitDemo/Resources/Storyboards/Main.storyboard diff --git a/TableKitDemo/TableKitDemo.xcodeproj/project.pbxproj b/TableKitDemo/TableKitDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..9175ff7 --- /dev/null +++ b/TableKitDemo/TableKitDemo.xcodeproj/project.pbxproj @@ -0,0 +1,362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + DA08A0531CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA08A0521CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift */; }; + DA9EA7821D0B6B070021F650 /* TableKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA9EA7811D0B6B070021F650 /* TableKit.framework */; }; + DAC2D5CA1C9D303E009E9C19 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */; }; + DAC2D5CF1C9D30A7009E9C19 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */; }; + DAC2D5D01C9D30A7009E9C19 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAC2D5CE1C9D30A7009E9C19 /* LaunchScreen.storyboard */; }; + DAC2D69C1C9E75E3009E9C19 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DAC2D69B1C9E75E3009E9C19 /* Assets.xcassets */; }; + DACB71761CC2D63D00432BD3 /* MainController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DACB71751CC2D63D00432BD3 /* MainController.swift */; }; + DACB71781CC2D6ED00432BD3 /* StoryboardTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DACB71771CC2D6ED00432BD3 /* StoryboardTableViewCell.swift */; }; + DACB717A1CC2D89D00432BD3 /* HeaderFooterController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DACB71791CC2D89D00432BD3 /* HeaderFooterController.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DA08A0521CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardImageTableViewCell.swift; sourceTree = ""; }; + DA9EA7811D0B6B070021F650 /* TableKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TableKit.framework; path = "../../../../../Library/Developer/Xcode/DerivedData/TableKit-blgxvmkyvpocltgadmpliruugomo/Build/Products/Debug-iphonesimulator/TableKit.framework"; sourceTree = ""; }; + DAB7EB271BEF787300D2AD5E /* TableKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TableKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; + DAC2D5CE1C9D30A7009E9C19 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; + DAC2D69B1C9E75E3009E9C19 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DAC2D69D1C9E78B5009E9C19 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DACB71751CC2D63D00432BD3 /* MainController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainController.swift; sourceTree = ""; }; + DACB71771CC2D6ED00432BD3 /* StoryboardTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardTableViewCell.swift; sourceTree = ""; }; + DACB71791CC2D89D00432BD3 /* HeaderFooterController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeaderFooterController.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DAB7EB241BEF787300D2AD5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DA9EA7821D0B6B070021F650 /* TableKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DA539C871CF50B1800368ACB /* Frameworks */ = { + isa = PBXGroup; + children = ( + DA9EA7811D0B6B070021F650 /* TableKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DAB7EB1E1BEF787300D2AD5E = { + isa = PBXGroup; + children = ( + DAC2D5C61C9D2FE5009E9C19 /* Classes */, + DAC2D5CB1C9D3058009E9C19 /* Resources */, + DA539C871CF50B1800368ACB /* Frameworks */, + DAB7EB281BEF787300D2AD5E /* Products */, + ); + sourceTree = ""; + }; + DAB7EB281BEF787300D2AD5E /* Products */ = { + isa = PBXGroup; + children = ( + DAB7EB271BEF787300D2AD5E /* TableKitDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + DAC2D5C61C9D2FE5009E9C19 /* Classes */ = { + isa = PBXGroup; + children = ( + DAC2D5C81C9D3014009E9C19 /* Application */, + DAC2D5C71C9D3005009E9C19 /* Presentation */, + ); + path = Classes; + sourceTree = ""; + }; + DAC2D5C71C9D3005009E9C19 /* Presentation */ = { + isa = PBXGroup; + children = ( + DACB71731CC2D5ED00432BD3 /* Controllers */, + DACB71741CC2D5FD00432BD3 /* Views */, + ); + path = Presentation; + sourceTree = ""; + }; + DAC2D5C81C9D3014009E9C19 /* Application */ = { + isa = PBXGroup; + children = ( + DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */, + ); + path = Application; + sourceTree = ""; + }; + DAC2D5CB1C9D3058009E9C19 /* Resources */ = { + isa = PBXGroup; + children = ( + DAC2D69D1C9E78B5009E9C19 /* Info.plist */, + DAC2D69A1C9E75BE009E9C19 /* Assets */, + DAC2D5CC1C9D306C009E9C19 /* Storyboards */, + ); + path = Resources; + sourceTree = ""; + }; + DAC2D5CC1C9D306C009E9C19 /* Storyboards */ = { + isa = PBXGroup; + children = ( + DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */, + DAC2D5CE1C9D30A7009E9C19 /* LaunchScreen.storyboard */, + ); + path = Storyboards; + sourceTree = ""; + }; + DAC2D69A1C9E75BE009E9C19 /* Assets */ = { + isa = PBXGroup; + children = ( + DAC2D69B1C9E75E3009E9C19 /* Assets.xcassets */, + ); + path = Assets; + sourceTree = ""; + }; + DACB71731CC2D5ED00432BD3 /* Controllers */ = { + isa = PBXGroup; + children = ( + DACB71751CC2D63D00432BD3 /* MainController.swift */, + DACB71791CC2D89D00432BD3 /* HeaderFooterController.swift */, + ); + path = Controllers; + sourceTree = ""; + }; + DACB71741CC2D5FD00432BD3 /* Views */ = { + isa = PBXGroup; + children = ( + DACB71771CC2D6ED00432BD3 /* StoryboardTableViewCell.swift */, + DA08A0521CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift */, + ); + path = Views; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DAB7EB261BEF787300D2AD5E /* TableKitDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = DAB7EB391BEF787300D2AD5E /* Build configuration list for PBXNativeTarget "TableKitDemo" */; + buildPhases = ( + DAB7EB231BEF787300D2AD5E /* Sources */, + DAB7EB241BEF787300D2AD5E /* Frameworks */, + DAB7EB251BEF787300D2AD5E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TableKitDemo; + productName = TabletDemo; + productReference = DAB7EB271BEF787300D2AD5E /* TableKitDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DAB7EB1F1BEF787300D2AD5E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0700; + ORGANIZATIONNAME = Tablet; + TargetAttributes = { + DAB7EB261BEF787300D2AD5E = { + CreatedOnToolsVersion = 7.0.1; + DevelopmentTeam = Z48R734SJX; + }; + }; + }; + buildConfigurationList = DAB7EB221BEF787300D2AD5E /* Build configuration list for PBXProject "TableKitDemo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DAB7EB1E1BEF787300D2AD5E; + productRefGroup = DAB7EB281BEF787300D2AD5E /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DAB7EB261BEF787300D2AD5E /* TableKitDemo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DAB7EB251BEF787300D2AD5E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DAC2D5CF1C9D30A7009E9C19 /* Main.storyboard in Resources */, + DAC2D5D01C9D30A7009E9C19 /* LaunchScreen.storyboard in Resources */, + DAC2D69C1C9E75E3009E9C19 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DAB7EB231BEF787300D2AD5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DACB71781CC2D6ED00432BD3 /* StoryboardTableViewCell.swift in Sources */, + DACB71761CC2D63D00432BD3 /* MainController.swift in Sources */, + DAC2D5CA1C9D303E009E9C19 /* AppDelegate.swift in Sources */, + DACB717A1CC2D89D00432BD3 /* HeaderFooterController.swift in Sources */, + DA08A0531CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + DAB7EB371BEF787300D2AD5E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DAB7EB381BEF787300D2AD5E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DAB7EB3A1BEF787300D2AD5E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + INFOPLIST_FILE = Resources/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablekit.demo; + PRODUCT_NAME = TableKitDemo; + PROVISIONING_PROFILE = ""; + }; + name = Debug; + }; + DAB7EB3B1BEF787300D2AD5E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + INFOPLIST_FILE = Resources/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablekit.demo; + PRODUCT_NAME = TableKitDemo; + PROVISIONING_PROFILE = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DAB7EB221BEF787300D2AD5E /* Build configuration list for PBXProject "TableKitDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DAB7EB371BEF787300D2AD5E /* Debug */, + DAB7EB381BEF787300D2AD5E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DAB7EB391BEF787300D2AD5E /* Build configuration list for PBXNativeTarget "TableKitDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DAB7EB3A1BEF787300D2AD5E /* Debug */, + DAB7EB3B1BEF787300D2AD5E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DAB7EB1F1BEF787300D2AD5E /* Project object */; +} diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TableKitDemo/TableKitDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to TableKitDemo/TableKitDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/Tablet.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate b/Tablet.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index b905fecdb7205bfdb2d2572bb0247f4217646129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21675 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tablet/Tablet.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist b/Tablet/Tablet.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index d54e643..0000000 --- a/Tablet/Tablet.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,19 +0,0 @@ - - - - - SuppressBuildableAutocreation - - DAC2D6681C9D743D009E9C19 - - primary - - - DAC2D6721C9D743D009E9C19 - - primary - - - - - diff --git a/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index fe2b454..0000000 --- a/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist b/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 96dcbf8..0000000 --- a/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - Tablet.xcscheme_^#shared#^_ - - orderHint - 0 - - - SuppressBuildableAutocreation - - DAC2D6681C9D743D009E9C19 - - primary - - - DAC2D6721C9D743D009E9C19 - - primary - - - - - diff --git a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj b/TabletDemo/TableKitDemo.xcodeproj/project.pbxproj similarity index 95% rename from TabletDemo/TabletDemo.xcodeproj/project.pbxproj rename to TabletDemo/TableKitDemo.xcodeproj/project.pbxproj index e5a839f..dac2c73 100644 --- a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj +++ b/TabletDemo/TableKitDemo.xcodeproj/project.pbxproj @@ -8,7 +8,7 @@ /* Begin PBXBuildFile section */ DA08A0531CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA08A0521CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift */; }; - DA539C941CF6610400368ACB /* Tablet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA539C931CF6610400368ACB /* Tablet.framework */; }; + DA9EA7421D0B63E20021F650 /* TableKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA9EA7411D0B63E20021F650 /* TableKit.framework */; }; DAC2D5CA1C9D303E009E9C19 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */; }; DAC2D5CF1C9D30A7009E9C19 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */; }; DAC2D5D01C9D30A7009E9C19 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAC2D5CE1C9D30A7009E9C19 /* LaunchScreen.storyboard */; }; @@ -21,6 +21,7 @@ /* Begin PBXFileReference section */ DA08A0521CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardImageTableViewCell.swift; sourceTree = ""; }; DA539C931CF6610400368ACB /* Tablet.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Tablet.framework; path = "../../../../../Library/Developer/Xcode/DerivedData/Tablet-hgommdyxtgxijceamltarpblrbwc/Build/Products/Debug-iphoneos/Tablet.framework"; sourceTree = ""; }; + DA9EA7411D0B63E20021F650 /* TableKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TableKit.framework; path = "../../../../../Library/Developer/Xcode/DerivedData/Tablet-hgommdyxtgxijceamltarpblrbwc/Build/Products/Debug-iphonesimulator/TableKit.framework"; sourceTree = ""; }; DAB7EB271BEF787300D2AD5E /* TabletDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TabletDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; @@ -37,7 +38,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DA539C941CF6610400368ACB /* Tablet.framework in Frameworks */, + DA9EA7421D0B63E20021F650 /* TableKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -47,6 +48,7 @@ DA539C871CF50B1800368ACB /* Frameworks */ = { isa = PBXGroup; children = ( + DA9EA7411D0B63E20021F650 /* TableKit.framework */, DA539C931CF6610400368ACB /* Tablet.framework */, ); name = Frameworks; diff --git a/Tablet/Tablet.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TabletDemo/TableKitDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 70% rename from Tablet/Tablet.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to TabletDemo/TableKitDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 78fd6b2..9fbb493 100644 --- a/Tablet/Tablet.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/TabletDemo/TableKitDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:TabletDemo.xcodeproj"> diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index ae39eebc9875e02408a70b7047d5e176092e3a70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17117 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 diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 6fe613053bcb6cea09e7d7012eac75a7444f9698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35030 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 D$j(G< diff --git a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index fe2b454..0000000 --- a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/TabletDemo.xcscheme b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/TabletDemo.xcscheme deleted file mode 100644 index 6db4123..0000000 --- a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/TabletDemo.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index c382e1a..0000000 --- a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - TabletDemo.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - DAB7EB261BEF787300D2AD5E - - primary - - - - - diff --git a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index fe2b454..0000000 --- a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/TabletDemo.xcscheme b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/TabletDemo.xcscheme deleted file mode 100644 index 5b59ce8..0000000 --- a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/TabletDemo.xcscheme +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 08916f9..0000000 --- a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - TabletDemo.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - DAB7EB261BEF787300D2AD5E - - primary - - - DAC2D5DB1C9D6433009E9C19 - - primary - - - - -