diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/akash.more.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/akash.more.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..7d83889 Binary files /dev/null and b/.swiftpm/xcode/package.xcworkspace/xcuserdata/akash.more.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/.swiftpm/xcode/xcuserdata/akash.more.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/akash.more.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..ac033af --- /dev/null +++ b/.swiftpm/xcode/xcuserdata/akash.more.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + SSPlaceHolderTableView.xcscheme_^#shared#^_ + + orderHint + 0 + + + SuppressBuildableAutocreation + + SSPlaceHolderTableView + + primary + + + SSPlaceHolderTableViewTests + + primary + + + SSPlaceHolderTableView_SSPlaceHolderTableView + + primary + + + + + diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..818310b --- /dev/null +++ b/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version: 5.6 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "SSPlaceHolderTableView", + platforms: [.iOS(.v13)], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "SSPlaceHolderTableView", + targets: ["SSPlaceHolderTableView"]), + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + // .package(url: /* package url */, from: "1.0.0"), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "SSPlaceHolderTableView", + dependencies: [], + resources: [.process("Resources/Assets.xcassets")]) + ] +) diff --git a/Pods/Pods.xcodeproj/xcuserdata/akash.more.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/akash.more.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..be21f9f --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/akash.more.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Pods-SSPlaceHolderTableView.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/SSPlaceHolderTableView.podspec b/SSPlaceHolderTableView.podspec index ee575ba..ae4c6ff 100644 --- a/SSPlaceHolderTableView.podspec +++ b/SSPlaceHolderTableView.podspec @@ -75,8 +75,8 @@ Pod::Spec.new do |spec| # Not including the public_header_files will make all headers public. # - spec.source_files = 'SSPlaceHolderTableView/Library/*.swift' - spec.resources = ['SSPlaceHolderTableView/XIB/*.xib','SSPlaceHolderTableView/Assets.xcassets'] + spec.source_files = 'Sources/SSPlaceHolderTableView/Library/*.swift' + spec.resources = ['Sources/SSPlaceHolderTableView/Resources/*.xib','Sources/SSPlaceHolderTableView/Resources/Assets.xcassets'] spec.documentation_url = 'docs/index.html' end diff --git a/SSPlaceHolderTableView.xcodeproj/project.pbxproj b/SSPlaceHolderTableView.xcodeproj/project.pbxproj index af2a632..cbffa65 100644 --- a/SSPlaceHolderTableView.xcodeproj/project.pbxproj +++ b/SSPlaceHolderTableView.xcodeproj/project.pbxproj @@ -16,21 +16,11 @@ 81265DA221E894380001C11B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81265DA121E894380001C11B /* AppDelegate.swift */; }; 81265DA421E894380001C11B /* TableVIewFullDemo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81265DA321E894380001C11B /* TableVIewFullDemo.swift */; }; 81265DA721E894380001C11B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81265DA521E894380001C11B /* Main.storyboard */; }; - 81265DA921E894390001C11B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 81265DA821E894390001C11B /* Assets.xcassets */; }; 81265DAC21E894390001C11B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81265DAA21E894390001C11B /* LaunchScreen.storyboard */; }; - 81265DB421E89F8F0001C11B /* TableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81265DB321E89F8F0001C11B /* TableView.swift */; }; - 8135D142224E1D9700B1CD0D /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8135D141224E1D9700B1CD0D /* Reachability.swift */; }; 814D9F9B224E657600348A41 /* TableView.png in Resources */ = {isa = PBXBuildFile; fileRef = 814D9F99224E657600348A41 /* TableView.png */; }; 814D9F9C224E657600348A41 /* CollectionView.png in Resources */ = {isa = PBXBuildFile; fileRef = 814D9F9A224E657600348A41 /* CollectionView.png */; }; - 81539F1621EF0C51003F4F93 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81539F1521EF0C51003F4F93 /* LoadingView.swift */; }; - 81539F1821EF0C5F003F4F93 /* LoadingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 81539F1721EF0C5F003F4F93 /* LoadingView.xib */; }; - 81539F1B21EF2029003F4F93 /* NoDataView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81539F1921EF2029003F4F93 /* NoDataView.swift */; }; - 81539F1C21EF204F003F4F93 /* NoDataView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 81539F1A21EF2029003F4F93 /* NoDataView.xib */; }; - 8170AB2A21F5BF3B0013C30D /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8170AB2921F5BF3B0013C30D /* Extensions.swift */; }; - 81A96F7121F06240002915D4 /* NetworkUnavailableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A96F7021F06240002915D4 /* NetworkUnavailableView.swift */; }; - 81A96F7221F077F6002915D4 /* NetworkUnavailableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 81A96F6F21F06240002915D4 /* NetworkUnavailableView.xib */; }; - 81A96F7421F1A54F002915D4 /* CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A96F7321F1A54F002915D4 /* CollectionView.swift */; }; 81A96F7621F1C964002915D4 /* CollectionViewFullDemo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A96F7521F1C964002915D4 /* CollectionViewFullDemo.swift */; }; + E4BD801728DB1A81002413CA /* Sources in Resources */ = {isa = PBXBuildFile; fileRef = E4BD801628DB1A81002413CA /* Sources */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -44,24 +34,14 @@ 81265DA121E894380001C11B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 81265DA321E894380001C11B /* TableVIewFullDemo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableVIewFullDemo.swift; sourceTree = ""; }; 81265DA621E894380001C11B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 81265DA821E894390001C11B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 81265DAB21E894390001C11B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 81265DAD21E894390001C11B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 81265DB321E89F8F0001C11B /* TableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableView.swift; sourceTree = ""; }; - 8135D141224E1D9700B1CD0D /* Reachability.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reachability.swift; sourceTree = ""; }; 814D9F99224E657600348A41 /* TableView.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TableView.png; sourceTree = ""; }; 814D9F9A224E657600348A41 /* CollectionView.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CollectionView.png; sourceTree = ""; }; - 81539F1521EF0C51003F4F93 /* LoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingView.swift; sourceTree = ""; }; - 81539F1721EF0C5F003F4F93 /* LoadingView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LoadingView.xib; sourceTree = ""; }; - 81539F1921EF2029003F4F93 /* NoDataView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoDataView.swift; sourceTree = ""; }; - 81539F1A21EF2029003F4F93 /* NoDataView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NoDataView.xib; sourceTree = ""; }; - 8170AB2921F5BF3B0013C30D /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; - 81A96F6F21F06240002915D4 /* NetworkUnavailableView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NetworkUnavailableView.xib; sourceTree = ""; }; - 81A96F7021F06240002915D4 /* NetworkUnavailableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkUnavailableView.swift; sourceTree = ""; }; - 81A96F7321F1A54F002915D4 /* CollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionView.swift; sourceTree = ""; }; 81A96F7521F1C964002915D4 /* CollectionViewFullDemo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionViewFullDemo.swift; sourceTree = ""; }; C60C807B9961F6410C5993E9 /* Pods_SSPlaceHolderTableView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SSPlaceHolderTableView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CF6D03242DF5CD118D7969D4 /* Pods-SSPlaceHolderTableView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SSPlaceHolderTableView.debug.xcconfig"; path = "Target Support Files/Pods-SSPlaceHolderTableView/Pods-SSPlaceHolderTableView.debug.xcconfig"; sourceTree = ""; }; + E4BD801628DB1A81002413CA /* Sources */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Sources; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -115,28 +95,16 @@ 81265DA021E894380001C11B /* SSPlaceHolderTableView */ = { isa = PBXGroup; children = ( + E4BD801628DB1A81002413CA /* Sources */, 81B7E48D2255C2AF001A069F /* Example */, 814D9F98224E655C00348A41 /* ScreenShot */, - 8135D143224E1E5E00B1CD0D /* XIB */, - 81BC0BB6224E0AD400AE73C2 /* Library */, 81265DA121E894380001C11B /* AppDelegate.swift */, 81265DAA21E894390001C11B /* LaunchScreen.storyboard */, 81265DAD21E894390001C11B /* Info.plist */, - 81265DA821E894390001C11B /* Assets.xcassets */, ); path = SSPlaceHolderTableView; sourceTree = ""; }; - 8135D143224E1E5E00B1CD0D /* XIB */ = { - isa = PBXGroup; - children = ( - 81539F1A21EF2029003F4F93 /* NoDataView.xib */, - 81539F1721EF0C5F003F4F93 /* LoadingView.xib */, - 81A96F6F21F06240002915D4 /* NetworkUnavailableView.xib */, - ); - path = XIB; - sourceTree = ""; - }; 814D9F98224E655C00348A41 /* ScreenShot */ = { isa = PBXGroup; children = ( @@ -160,20 +128,6 @@ path = Example; sourceTree = ""; }; - 81BC0BB6224E0AD400AE73C2 /* Library */ = { - isa = PBXGroup; - children = ( - 8135D141224E1D9700B1CD0D /* Reachability.swift */, - 81265DB321E89F8F0001C11B /* TableView.swift */, - 81A96F7321F1A54F002915D4 /* CollectionView.swift */, - 81539F1921EF2029003F4F93 /* NoDataView.swift */, - 81539F1521EF0C51003F4F93 /* LoadingView.swift */, - 81A96F7021F06240002915D4 /* NetworkUnavailableView.swift */, - 8170AB2921F5BF3B0013C30D /* Extensions.swift */, - ); - path = Library; - sourceTree = ""; - }; E935BDBEA14FCB0D2F242C8D /* Frameworks */ = { isa = PBXGroup; children = ( @@ -244,12 +198,9 @@ files = ( 814D9F9B224E657600348A41 /* TableView.png in Resources */, 81265DAC21E894390001C11B /* LaunchScreen.storyboard in Resources */, - 81539F1821EF0C5F003F4F93 /* LoadingView.xib in Resources */, - 81A96F7221F077F6002915D4 /* NetworkUnavailableView.xib in Resources */, 814D9F9C224E657600348A41 /* CollectionView.png in Resources */, - 81265DA921E894390001C11B /* Assets.xcassets in Resources */, + E4BD801728DB1A81002413CA /* Sources in Resources */, 81265DA721E894380001C11B /* Main.storyboard in Resources */, - 81539F1C21EF204F003F4F93 /* NoDataView.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -284,17 +235,10 @@ 811F07A3225B0F8A0054D0C6 /* ExampleListViewController.swift in Sources */, 81265DA421E894380001C11B /* TableVIewFullDemo.swift in Sources */, 811F07AD225B13710054D0C6 /* NoInternetPlaceholder.swift in Sources */, - 81A96F7121F06240002915D4 /* NetworkUnavailableView.swift in Sources */, - 81539F1621EF0C51003F4F93 /* LoadingView.swift in Sources */, - 8170AB2A21F5BF3B0013C30D /* Extensions.swift in Sources */, - 81265DB421E89F8F0001C11B /* TableView.swift in Sources */, 81265DA221E894380001C11B /* AppDelegate.swift in Sources */, - 81539F1B21EF2029003F4F93 /* NoDataView.swift in Sources */, - 8135D142224E1D9700B1CD0D /* Reachability.swift in Sources */, 81A96F7621F1C964002915D4 /* CollectionViewFullDemo.swift in Sources */, 811F07A7225B136C0054D0C6 /* LoadingTableView.swift in Sources */, 811F07A9225B136D0054D0C6 /* DataAvailablePlaceholderTableView.swift in Sources */, - 81A96F7421F1A54F002915D4 /* CollectionView.swift in Sources */, 811F07AB225B136F0054D0C6 /* DataUnAvailablePlaceholderTableView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/SSPlaceHolderTableView/Library/CollectionView.swift b/Sources/SSPlaceHolderTableView/Library/CollectionView.swift similarity index 100% rename from SSPlaceHolderTableView/Library/CollectionView.swift rename to Sources/SSPlaceHolderTableView/Library/CollectionView.swift diff --git a/SSPlaceHolderTableView/Library/Extensions.swift b/Sources/SSPlaceHolderTableView/Library/Extensions.swift similarity index 100% rename from SSPlaceHolderTableView/Library/Extensions.swift rename to Sources/SSPlaceHolderTableView/Library/Extensions.swift diff --git a/SSPlaceHolderTableView/Library/LoadingView.swift b/Sources/SSPlaceHolderTableView/Library/LoadingView.swift similarity index 100% rename from SSPlaceHolderTableView/Library/LoadingView.swift rename to Sources/SSPlaceHolderTableView/Library/LoadingView.swift diff --git a/SSPlaceHolderTableView/Library/NetworkUnavailableView.swift b/Sources/SSPlaceHolderTableView/Library/NetworkUnavailableView.swift similarity index 100% rename from SSPlaceHolderTableView/Library/NetworkUnavailableView.swift rename to Sources/SSPlaceHolderTableView/Library/NetworkUnavailableView.swift diff --git a/SSPlaceHolderTableView/Library/NoDataView.swift b/Sources/SSPlaceHolderTableView/Library/NoDataView.swift similarity index 100% rename from SSPlaceHolderTableView/Library/NoDataView.swift rename to Sources/SSPlaceHolderTableView/Library/NoDataView.swift diff --git a/SSPlaceHolderTableView/Library/Reachability.swift b/Sources/SSPlaceHolderTableView/Library/Reachability.swift similarity index 100% rename from SSPlaceHolderTableView/Library/Reachability.swift rename to Sources/SSPlaceHolderTableView/Library/Reachability.swift diff --git a/SSPlaceHolderTableView/Library/TableView.swift b/Sources/SSPlaceHolderTableView/Library/TableView.swift similarity index 99% rename from SSPlaceHolderTableView/Library/TableView.swift rename to Sources/SSPlaceHolderTableView/Library/TableView.swift index f67f5d7..7313d49 100644 --- a/SSPlaceHolderTableView/Library/TableView.swift +++ b/Sources/SSPlaceHolderTableView/Library/TableView.swift @@ -19,7 +19,7 @@ public enum SSPlaceHolderStates { case unknown } -protocol networkRechabilityProtocol: class { +protocol networkRechabilityProtocol: AnyObject { func retryNetworkCall() } var gCenterOffSetMultiplier: CGFloat = 0.75 diff --git a/SSPlaceHolderTableView/Assets.xcassets/AppIcon.appiconset/Contents.json b/Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from SSPlaceHolderTableView/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/SSPlaceHolderTableView/Assets.xcassets/Contents.json b/Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/Contents.json similarity index 100% rename from SSPlaceHolderTableView/Assets.xcassets/Contents.json rename to Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/Contents.json diff --git a/SSPlaceHolderTableView/Assets.xcassets/loading.imageset/Contents.json b/Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/loading.imageset/Contents.json similarity index 100% rename from SSPlaceHolderTableView/Assets.xcassets/loading.imageset/Contents.json rename to Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/loading.imageset/Contents.json diff --git a/SSPlaceHolderTableView/Assets.xcassets/loading.imageset/loading.pdf b/Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/loading.imageset/loading.pdf similarity index 100% rename from SSPlaceHolderTableView/Assets.xcassets/loading.imageset/loading.pdf rename to Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/loading.imageset/loading.pdf diff --git a/SSPlaceHolderTableView/Assets.xcassets/noData.imageset/Contents.json b/Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/noData.imageset/Contents.json similarity index 100% rename from SSPlaceHolderTableView/Assets.xcassets/noData.imageset/Contents.json rename to Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/noData.imageset/Contents.json diff --git a/SSPlaceHolderTableView/Assets.xcassets/noData.imageset/no data.pdf b/Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/noData.imageset/no data.pdf similarity index 100% rename from SSPlaceHolderTableView/Assets.xcassets/noData.imageset/no data.pdf rename to Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/noData.imageset/no data.pdf diff --git a/SSPlaceHolderTableView/Assets.xcassets/noInternet.imageset/Contents.json b/Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/noInternet.imageset/Contents.json similarity index 100% rename from SSPlaceHolderTableView/Assets.xcassets/noInternet.imageset/Contents.json rename to Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/noInternet.imageset/Contents.json diff --git a/SSPlaceHolderTableView/Assets.xcassets/noInternet.imageset/no wifi.pdf b/Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/noInternet.imageset/no wifi.pdf similarity index 100% rename from SSPlaceHolderTableView/Assets.xcassets/noInternet.imageset/no wifi.pdf rename to Sources/SSPlaceHolderTableView/Resources/Assets.xcassets/noInternet.imageset/no wifi.pdf diff --git a/SSPlaceHolderTableView/XIB/LoadingView.xib b/Sources/SSPlaceHolderTableView/Resources/LoadingView.xib similarity index 100% rename from SSPlaceHolderTableView/XIB/LoadingView.xib rename to Sources/SSPlaceHolderTableView/Resources/LoadingView.xib diff --git a/SSPlaceHolderTableView/XIB/NetworkUnavailableView.xib b/Sources/SSPlaceHolderTableView/Resources/NetworkUnavailableView.xib similarity index 100% rename from SSPlaceHolderTableView/XIB/NetworkUnavailableView.xib rename to Sources/SSPlaceHolderTableView/Resources/NetworkUnavailableView.xib diff --git a/SSPlaceHolderTableView/XIB/NoDataView.xib b/Sources/SSPlaceHolderTableView/Resources/NoDataView.xib similarity index 100% rename from SSPlaceHolderTableView/XIB/NoDataView.xib rename to Sources/SSPlaceHolderTableView/Resources/NoDataView.xib diff --git a/Sources/SSPlaceHolderTableView/SSPlaceHolderTableView.swift b/Sources/SSPlaceHolderTableView/SSPlaceHolderTableView.swift new file mode 100644 index 0000000..66afdfb --- /dev/null +++ b/Sources/SSPlaceHolderTableView/SSPlaceHolderTableView.swift @@ -0,0 +1,6 @@ +public struct SSPlaceHolderTableView { + public private(set) var text = "Hello, World!" + + public init() { + } +}