├── LICENSE ├── README.md └── popdowntable ├── .DS_Store ├── Main_iPhone.storyboard ├── POPDCell.h ├── POPDCell.m ├── POPDCell.xib ├── popdowntable.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── alexdimango.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── alexdimango.xcuserdatad │ ├── xcdebugger │ ├── Breakpoints.xcbkptlist │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ ├── popdowntable.xcscheme │ └── xcschememanagement.plist ├── popdowntable ├── .DS_Store ├── Images.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── LaunchImage.launchimage │ │ └── Contents.json ├── POPDAppDelegate.h ├── POPDAppDelegate.m ├── POPDSampleViewController.h ├── POPDSampleViewController.m ├── POPDViewController.h ├── POPDViewController.m ├── en.lproj │ └── InfoPlist.strings ├── main.m ├── popdowntable-Info.plist └── popdowntable-Prefix.pch └── popdowntableTests ├── en.lproj └── InfoPlist.strings ├── popdowntableTests-Info.plist └── popdowntableTests.m /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Alex Di Mango 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # POPDownMenuTable 2 | 3 | ![UIExample](http://gdurl.com/r9cj) 4 | 5 | This project was inspired by the popdown-menu functionality seen in the Youtube iOS app. POPDownMenuTable is a UITableViewController subclass for implementing popdown-menu functionality. It integrates with storyboard-based apps as well as traditional setups. 6 | 7 | Compatibility: iOS 5.0+. Requires ARC. 8 | 9 | ## Author 10 | 11 | Alex Di Mango 12 | 13 | Specialities: Architecture, Mobile App, iOS.
14 | http://about.me/alex.dimango 15 | 16 | ## License 17 | 18 | MIT License. As stated under the LICENSE file. 19 | -------------------------------------------------------------------------------- /popdowntable/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adimango/POPDownMenuTable/2993885b39061d3d4488df37b30101fe07cab552/popdowntable/.DS_Store -------------------------------------------------------------------------------- /popdowntable/Main_iPhone.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /popdowntable/POPDCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // POPDCell.h 3 | // popdowntable 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface POPDCell : UITableViewCell 12 | 13 | @property (strong, nonatomic) IBOutlet UILabel *labelText; 14 | @property (strong, nonatomic) IBOutlet UILabel *separator; 15 | @property (strong, nonatomic) IBOutlet UILabel *sepShadow; 16 | @property (strong, nonatomic) IBOutlet UILabel *shadow; 17 | 18 | 19 | 20 | 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /popdowntable/POPDCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // POPDCell.m 3 | // popdowntable 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import "POPDCell.h" 10 | 11 | @implementation POPDCell 12 | 13 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 14 | { 15 | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 16 | if (self) { 17 | // Initialization code 18 | } 19 | return self; 20 | } 21 | 22 | -(void)prepareForReuse 23 | { 24 | self.backgroundColor = [UIColor clearColor]; 25 | } 26 | @end 27 | -------------------------------------------------------------------------------- /popdowntable/POPDCell.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1552 5 | 12F37 6 | 3084 7 | 1187.39 8 | 626.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 2083 12 | 13 | 14 | IBProxyObject 15 | IBUILabel 16 | IBUITableViewCell 17 | 18 | 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | PluginDependencyRecalculationVersion 23 | 24 | 25 | 26 | 27 | IBFilesOwner 28 | IBCocoaTouchFramework 29 | 30 | 31 | IBFirstResponder 32 | IBCocoaTouchFramework 33 | 34 | 35 | 36 | 292 37 | 38 | 39 | 40 | 256 41 | 42 | 43 | 44 | 292 45 | {{0, 42}, {320, 1}} 46 | 47 | 48 | 49 | _NS:9 50 | 51 | 1 52 | MCAwIDAAA 53 | 54 | NO 55 | YES 56 | 7 57 | NO 58 | IBCocoaTouchFramework 59 | 60 | 61 | 62 | 3 63 | MQA 64 | 65 | 0 66 | 67 | 1 68 | 17 69 | 70 | 71 | Helvetica 72 | 17 73 | 16 74 | 75 | NO 76 | 77 | 78 | 79 | 292 80 | {{0, 43}, {320, 1}} 81 | 82 | 83 | 84 | _NS:9 85 | 86 | NO 87 | YES 88 | 7 89 | NO 90 | IBCocoaTouchFramework 91 | 92 | 93 | 94 | 0 95 | 96 | 97 | NO 98 | 99 | 100 | 101 | 292 102 | {{9, 11}, {300, 21}} 103 | 104 | 105 | 106 | _NS:9 107 | NO 108 | YES 109 | 7 110 | NO 111 | IBCocoaTouchFramework 112 | Label 113 | 114 | 1 115 | MCAwIDAAA 116 | darkTextColor 117 | 118 | 119 | 0 120 | 121 | 122 | NO 123 | 124 | 125 | 126 | 292 127 | {{0, 41}, {320, 1}} 128 | 129 | 130 | 131 | _NS:9 132 | 133 | NO 134 | YES 135 | 7 136 | NO 137 | IBCocoaTouchFramework 138 | 139 | 140 | 141 | 0 142 | 143 | 144 | NO 145 | 146 | 147 | {320, 43} 148 | 149 | 150 | 151 | _NS:11 152 | 153 | 3 154 | MCAwAA 155 | 156 | NO 157 | YES 158 | 4 159 | YES 160 | IBCocoaTouchFramework 161 | 162 | 163 | {320, 44} 164 | 165 | 166 | 167 | _NS:9 168 | IBCocoaTouchFramework 169 | 170 | menuCell 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | labelText 179 | 180 | 181 | 182 | 30 183 | 184 | 185 | 186 | separator 187 | 188 | 189 | 190 | 69 191 | 192 | 193 | 194 | sepShadow 195 | 196 | 197 | 198 | 70 199 | 200 | 201 | 202 | shadow 203 | 204 | 205 | 206 | 71 207 | 208 | 209 | 210 | 211 | 212 | 0 213 | 214 | 215 | 216 | 217 | 218 | -1 219 | 220 | 221 | File's Owner 222 | 223 | 224 | -2 225 | 226 | 227 | 228 | 229 | 3 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 14 241 | 242 | 243 | 244 | separator 245 | 246 | 247 | 25 248 | 249 | 250 | 251 | 252 | 253 | 31 254 | 255 | 256 | 257 | sep-shadow 258 | 259 | 260 | 42 261 | 262 | 263 | 264 | shadow 265 | 266 | 267 | 268 | 269 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 270 | UIResponder 271 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 272 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 273 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 274 | POPDCell 275 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 276 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 277 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 278 | 279 | 280 | 281 | 282 | 283 | 81 284 | 285 | 286 | 287 | 288 | POPDCell 289 | UITableViewCell 290 | 291 | UILabel 292 | UILabel 293 | UILabel 294 | UILabel 295 | 296 | 297 | 298 | labelText 299 | UILabel 300 | 301 | 302 | sepShadow 303 | UILabel 304 | 305 | 306 | separator 307 | UILabel 308 | 309 | 310 | shadow 311 | UILabel 312 | 313 | 314 | 315 | IBProjectSource 316 | ./Classes/POPDCell.h 317 | 318 | 319 | 320 | 321 | 0 322 | IBCocoaTouchFramework 323 | YES 324 | 3 325 | 2083 326 | 327 | 328 | -------------------------------------------------------------------------------- /popdowntable/popdowntable.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 2CA6E0D017E5EA2D0041CFDE /* Main_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2CA6E0CF17E5EA2D0041CFDE /* Main_iPhone.storyboard */; }; 11 | 2CA6E0D317E5EF380041CFDE /* POPDCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA6E0D217E5EF380041CFDE /* POPDCell.m */; }; 12 | 2CA6E0D417E5EF380041CFDE /* POPDCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA6E0D217E5EF380041CFDE /* POPDCell.m */; }; 13 | 2CA6E0D617E5EF7E0041CFDE /* POPDCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2CA6E0D517E5EF7E0041CFDE /* POPDCell.xib */; }; 14 | 2CA6E0D717E5EF7E0041CFDE /* POPDCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2CA6E0D517E5EF7E0041CFDE /* POPDCell.xib */; }; 15 | 2CA6E0DA17E61FE70041CFDE /* POPDSampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA6E0D917E61FE70041CFDE /* POPDSampleViewController.m */; }; 16 | 2CA6E0DB17E61FE70041CFDE /* POPDSampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA6E0D917E61FE70041CFDE /* POPDSampleViewController.m */; }; 17 | 2CFAD52717E5D41F00980C70 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CFAD52617E5D41F00980C70 /* Foundation.framework */; }; 18 | 2CFAD52917E5D41F00980C70 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CFAD52817E5D41F00980C70 /* CoreGraphics.framework */; }; 19 | 2CFAD52B17E5D41F00980C70 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CFAD52A17E5D41F00980C70 /* UIKit.framework */; }; 20 | 2CFAD53117E5D41F00980C70 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2CFAD52F17E5D41F00980C70 /* InfoPlist.strings */; }; 21 | 2CFAD53317E5D41F00980C70 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CFAD53217E5D41F00980C70 /* main.m */; }; 22 | 2CFAD53717E5D41F00980C70 /* POPDAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CFAD53617E5D41F00980C70 /* POPDAppDelegate.m */; }; 23 | 2CFAD54217E5D42000980C70 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2CFAD54117E5D42000980C70 /* Images.xcassets */; }; 24 | 2CFAD54917E5D42000980C70 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CFAD54817E5D42000980C70 /* XCTest.framework */; }; 25 | 2CFAD54A17E5D42000980C70 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CFAD52617E5D41F00980C70 /* Foundation.framework */; }; 26 | 2CFAD54B17E5D42000980C70 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CFAD52A17E5D41F00980C70 /* UIKit.framework */; }; 27 | 2CFAD55317E5D42000980C70 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2CFAD55117E5D42000980C70 /* InfoPlist.strings */; }; 28 | 2CFAD55517E5D42000980C70 /* popdowntableTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CFAD55417E5D42000980C70 /* popdowntableTests.m */; }; 29 | 2CFAD56017E5D63900980C70 /* POPDViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CFAD55F17E5D63900980C70 /* POPDViewController.m */; }; 30 | 2CFAD56117E5D63900980C70 /* POPDViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CFAD55F17E5D63900980C70 /* POPDViewController.m */; }; 31 | /* End PBXBuildFile section */ 32 | 33 | /* Begin PBXContainerItemProxy section */ 34 | 2CFAD54C17E5D42000980C70 /* PBXContainerItemProxy */ = { 35 | isa = PBXContainerItemProxy; 36 | containerPortal = 2CFAD51B17E5D41F00980C70 /* Project object */; 37 | proxyType = 1; 38 | remoteGlobalIDString = 2CFAD52217E5D41F00980C70; 39 | remoteInfo = popdowntable; 40 | }; 41 | /* End PBXContainerItemProxy section */ 42 | 43 | /* Begin PBXFileReference section */ 44 | 2CA6E0CF17E5EA2D0041CFDE /* Main_iPhone.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main_iPhone.storyboard; sourceTree = ""; }; 45 | 2CA6E0D117E5EF380041CFDE /* POPDCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = POPDCell.h; path = ../POPDCell.h; sourceTree = ""; }; 46 | 2CA6E0D217E5EF380041CFDE /* POPDCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = POPDCell.m; path = ../POPDCell.m; sourceTree = ""; }; 47 | 2CA6E0D517E5EF7E0041CFDE /* POPDCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = POPDCell.xib; path = ../POPDCell.xib; sourceTree = ""; }; 48 | 2CA6E0D817E61FE60041CFDE /* POPDSampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPDSampleViewController.h; sourceTree = ""; }; 49 | 2CA6E0D917E61FE70041CFDE /* POPDSampleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = POPDSampleViewController.m; sourceTree = ""; }; 50 | 2CFAD52317E5D41F00980C70 /* popdowntable.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = popdowntable.app; sourceTree = BUILT_PRODUCTS_DIR; }; 51 | 2CFAD52617E5D41F00980C70 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 52 | 2CFAD52817E5D41F00980C70 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 53 | 2CFAD52A17E5D41F00980C70 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 54 | 2CFAD52E17E5D41F00980C70 /* popdowntable-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "popdowntable-Info.plist"; sourceTree = ""; }; 55 | 2CFAD53017E5D41F00980C70 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 56 | 2CFAD53217E5D41F00980C70 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 57 | 2CFAD53417E5D41F00980C70 /* popdowntable-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "popdowntable-Prefix.pch"; sourceTree = ""; }; 58 | 2CFAD53517E5D41F00980C70 /* POPDAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = POPDAppDelegate.h; sourceTree = ""; }; 59 | 2CFAD53617E5D41F00980C70 /* POPDAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = POPDAppDelegate.m; sourceTree = ""; }; 60 | 2CFAD54117E5D42000980C70 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 61 | 2CFAD54717E5D42000980C70 /* popdowntableTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = popdowntableTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 62 | 2CFAD54817E5D42000980C70 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 63 | 2CFAD55017E5D42000980C70 /* popdowntableTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "popdowntableTests-Info.plist"; sourceTree = ""; }; 64 | 2CFAD55217E5D42000980C70 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 65 | 2CFAD55417E5D42000980C70 /* popdowntableTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = popdowntableTests.m; sourceTree = ""; }; 66 | 2CFAD55E17E5D63900980C70 /* POPDViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPDViewController.h; sourceTree = ""; }; 67 | 2CFAD55F17E5D63900980C70 /* POPDViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = POPDViewController.m; sourceTree = ""; }; 68 | /* End PBXFileReference section */ 69 | 70 | /* Begin PBXFrameworksBuildPhase section */ 71 | 2CFAD52017E5D41F00980C70 /* Frameworks */ = { 72 | isa = PBXFrameworksBuildPhase; 73 | buildActionMask = 2147483647; 74 | files = ( 75 | 2CFAD52917E5D41F00980C70 /* CoreGraphics.framework in Frameworks */, 76 | 2CFAD52B17E5D41F00980C70 /* UIKit.framework in Frameworks */, 77 | 2CFAD52717E5D41F00980C70 /* Foundation.framework in Frameworks */, 78 | ); 79 | runOnlyForDeploymentPostprocessing = 0; 80 | }; 81 | 2CFAD54417E5D42000980C70 /* Frameworks */ = { 82 | isa = PBXFrameworksBuildPhase; 83 | buildActionMask = 2147483647; 84 | files = ( 85 | 2CFAD54917E5D42000980C70 /* XCTest.framework in Frameworks */, 86 | 2CFAD54B17E5D42000980C70 /* UIKit.framework in Frameworks */, 87 | 2CFAD54A17E5D42000980C70 /* Foundation.framework in Frameworks */, 88 | ); 89 | runOnlyForDeploymentPostprocessing = 0; 90 | }; 91 | /* End PBXFrameworksBuildPhase section */ 92 | 93 | /* Begin PBXGroup section */ 94 | 2CFAD51A17E5D41F00980C70 = { 95 | isa = PBXGroup; 96 | children = ( 97 | 2CA6E0CF17E5EA2D0041CFDE /* Main_iPhone.storyboard */, 98 | 2CFAD52C17E5D41F00980C70 /* popdowntable */, 99 | 2CFAD54E17E5D42000980C70 /* popdowntableTests */, 100 | 2CFAD52517E5D41F00980C70 /* Frameworks */, 101 | 2CFAD52417E5D41F00980C70 /* Products */, 102 | ); 103 | sourceTree = ""; 104 | }; 105 | 2CFAD52417E5D41F00980C70 /* Products */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 2CFAD52317E5D41F00980C70 /* popdowntable.app */, 109 | 2CFAD54717E5D42000980C70 /* popdowntableTests.xctest */, 110 | ); 111 | name = Products; 112 | sourceTree = ""; 113 | }; 114 | 2CFAD52517E5D41F00980C70 /* Frameworks */ = { 115 | isa = PBXGroup; 116 | children = ( 117 | 2CFAD52617E5D41F00980C70 /* Foundation.framework */, 118 | 2CFAD52817E5D41F00980C70 /* CoreGraphics.framework */, 119 | 2CFAD52A17E5D41F00980C70 /* UIKit.framework */, 120 | 2CFAD54817E5D42000980C70 /* XCTest.framework */, 121 | ); 122 | name = Frameworks; 123 | sourceTree = ""; 124 | }; 125 | 2CFAD52C17E5D41F00980C70 /* popdowntable */ = { 126 | isa = PBXGroup; 127 | children = ( 128 | 2CA6E0D517E5EF7E0041CFDE /* POPDCell.xib */, 129 | 2CA6E0D117E5EF380041CFDE /* POPDCell.h */, 130 | 2CA6E0D217E5EF380041CFDE /* POPDCell.m */, 131 | 2CFAD53517E5D41F00980C70 /* POPDAppDelegate.h */, 132 | 2CFAD53617E5D41F00980C70 /* POPDAppDelegate.m */, 133 | 2CFAD54117E5D42000980C70 /* Images.xcassets */, 134 | 2CFAD52D17E5D41F00980C70 /* Supporting Files */, 135 | 2CFAD55E17E5D63900980C70 /* POPDViewController.h */, 136 | 2CFAD55F17E5D63900980C70 /* POPDViewController.m */, 137 | 2CA6E0D817E61FE60041CFDE /* POPDSampleViewController.h */, 138 | 2CA6E0D917E61FE70041CFDE /* POPDSampleViewController.m */, 139 | ); 140 | path = popdowntable; 141 | sourceTree = ""; 142 | }; 143 | 2CFAD52D17E5D41F00980C70 /* Supporting Files */ = { 144 | isa = PBXGroup; 145 | children = ( 146 | 2CFAD52E17E5D41F00980C70 /* popdowntable-Info.plist */, 147 | 2CFAD52F17E5D41F00980C70 /* InfoPlist.strings */, 148 | 2CFAD53217E5D41F00980C70 /* main.m */, 149 | 2CFAD53417E5D41F00980C70 /* popdowntable-Prefix.pch */, 150 | ); 151 | name = "Supporting Files"; 152 | sourceTree = ""; 153 | }; 154 | 2CFAD54E17E5D42000980C70 /* popdowntableTests */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | 2CFAD55417E5D42000980C70 /* popdowntableTests.m */, 158 | 2CFAD54F17E5D42000980C70 /* Supporting Files */, 159 | ); 160 | path = popdowntableTests; 161 | sourceTree = ""; 162 | }; 163 | 2CFAD54F17E5D42000980C70 /* Supporting Files */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | 2CFAD55017E5D42000980C70 /* popdowntableTests-Info.plist */, 167 | 2CFAD55117E5D42000980C70 /* InfoPlist.strings */, 168 | ); 169 | name = "Supporting Files"; 170 | sourceTree = ""; 171 | }; 172 | /* End PBXGroup section */ 173 | 174 | /* Begin PBXNativeTarget section */ 175 | 2CFAD52217E5D41F00980C70 /* popdowntable */ = { 176 | isa = PBXNativeTarget; 177 | buildConfigurationList = 2CFAD55817E5D42000980C70 /* Build configuration list for PBXNativeTarget "popdowntable" */; 178 | buildPhases = ( 179 | 2CFAD51F17E5D41F00980C70 /* Sources */, 180 | 2CFAD52017E5D41F00980C70 /* Frameworks */, 181 | 2CFAD52117E5D41F00980C70 /* Resources */, 182 | ); 183 | buildRules = ( 184 | ); 185 | dependencies = ( 186 | ); 187 | name = popdowntable; 188 | productName = popdowntable; 189 | productReference = 2CFAD52317E5D41F00980C70 /* popdowntable.app */; 190 | productType = "com.apple.product-type.application"; 191 | }; 192 | 2CFAD54617E5D42000980C70 /* popdowntableTests */ = { 193 | isa = PBXNativeTarget; 194 | buildConfigurationList = 2CFAD55B17E5D42000980C70 /* Build configuration list for PBXNativeTarget "popdowntableTests" */; 195 | buildPhases = ( 196 | 2CFAD54317E5D42000980C70 /* Sources */, 197 | 2CFAD54417E5D42000980C70 /* Frameworks */, 198 | 2CFAD54517E5D42000980C70 /* Resources */, 199 | ); 200 | buildRules = ( 201 | ); 202 | dependencies = ( 203 | 2CFAD54D17E5D42000980C70 /* PBXTargetDependency */, 204 | ); 205 | name = popdowntableTests; 206 | productName = popdowntableTests; 207 | productReference = 2CFAD54717E5D42000980C70 /* popdowntableTests.xctest */; 208 | productType = "com.apple.product-type.bundle.unit-test"; 209 | }; 210 | /* End PBXNativeTarget section */ 211 | 212 | /* Begin PBXProject section */ 213 | 2CFAD51B17E5D41F00980C70 /* Project object */ = { 214 | isa = PBXProject; 215 | attributes = { 216 | CLASSPREFIX = POPD; 217 | LastUpgradeCheck = 0500; 218 | ORGANIZATIONNAME = "Alex Di Mango"; 219 | TargetAttributes = { 220 | 2CFAD54617E5D42000980C70 = { 221 | TestTargetID = 2CFAD52217E5D41F00980C70; 222 | }; 223 | }; 224 | }; 225 | buildConfigurationList = 2CFAD51E17E5D41F00980C70 /* Build configuration list for PBXProject "popdowntable" */; 226 | compatibilityVersion = "Xcode 3.2"; 227 | developmentRegion = English; 228 | hasScannedForEncodings = 0; 229 | knownRegions = ( 230 | en, 231 | Base, 232 | ); 233 | mainGroup = 2CFAD51A17E5D41F00980C70; 234 | productRefGroup = 2CFAD52417E5D41F00980C70 /* Products */; 235 | projectDirPath = ""; 236 | projectRoot = ""; 237 | targets = ( 238 | 2CFAD52217E5D41F00980C70 /* popdowntable */, 239 | 2CFAD54617E5D42000980C70 /* popdowntableTests */, 240 | ); 241 | }; 242 | /* End PBXProject section */ 243 | 244 | /* Begin PBXResourcesBuildPhase section */ 245 | 2CFAD52117E5D41F00980C70 /* Resources */ = { 246 | isa = PBXResourcesBuildPhase; 247 | buildActionMask = 2147483647; 248 | files = ( 249 | 2CFAD54217E5D42000980C70 /* Images.xcassets in Resources */, 250 | 2CFAD53117E5D41F00980C70 /* InfoPlist.strings in Resources */, 251 | 2CA6E0D017E5EA2D0041CFDE /* Main_iPhone.storyboard in Resources */, 252 | 2CA6E0D617E5EF7E0041CFDE /* POPDCell.xib in Resources */, 253 | ); 254 | runOnlyForDeploymentPostprocessing = 0; 255 | }; 256 | 2CFAD54517E5D42000980C70 /* Resources */ = { 257 | isa = PBXResourcesBuildPhase; 258 | buildActionMask = 2147483647; 259 | files = ( 260 | 2CFAD55317E5D42000980C70 /* InfoPlist.strings in Resources */, 261 | 2CA6E0D717E5EF7E0041CFDE /* POPDCell.xib in Resources */, 262 | ); 263 | runOnlyForDeploymentPostprocessing = 0; 264 | }; 265 | /* End PBXResourcesBuildPhase section */ 266 | 267 | /* Begin PBXSourcesBuildPhase section */ 268 | 2CFAD51F17E5D41F00980C70 /* Sources */ = { 269 | isa = PBXSourcesBuildPhase; 270 | buildActionMask = 2147483647; 271 | files = ( 272 | 2CFAD56017E5D63900980C70 /* POPDViewController.m in Sources */, 273 | 2CFAD53317E5D41F00980C70 /* main.m in Sources */, 274 | 2CFAD53717E5D41F00980C70 /* POPDAppDelegate.m in Sources */, 275 | 2CA6E0D317E5EF380041CFDE /* POPDCell.m in Sources */, 276 | 2CA6E0DA17E61FE70041CFDE /* POPDSampleViewController.m in Sources */, 277 | ); 278 | runOnlyForDeploymentPostprocessing = 0; 279 | }; 280 | 2CFAD54317E5D42000980C70 /* Sources */ = { 281 | isa = PBXSourcesBuildPhase; 282 | buildActionMask = 2147483647; 283 | files = ( 284 | 2CFAD55517E5D42000980C70 /* popdowntableTests.m in Sources */, 285 | 2CFAD56117E5D63900980C70 /* POPDViewController.m in Sources */, 286 | 2CA6E0D417E5EF380041CFDE /* POPDCell.m in Sources */, 287 | 2CA6E0DB17E61FE70041CFDE /* POPDSampleViewController.m in Sources */, 288 | ); 289 | runOnlyForDeploymentPostprocessing = 0; 290 | }; 291 | /* End PBXSourcesBuildPhase section */ 292 | 293 | /* Begin PBXTargetDependency section */ 294 | 2CFAD54D17E5D42000980C70 /* PBXTargetDependency */ = { 295 | isa = PBXTargetDependency; 296 | target = 2CFAD52217E5D41F00980C70 /* popdowntable */; 297 | targetProxy = 2CFAD54C17E5D42000980C70 /* PBXContainerItemProxy */; 298 | }; 299 | /* End PBXTargetDependency section */ 300 | 301 | /* Begin PBXVariantGroup section */ 302 | 2CFAD52F17E5D41F00980C70 /* InfoPlist.strings */ = { 303 | isa = PBXVariantGroup; 304 | children = ( 305 | 2CFAD53017E5D41F00980C70 /* en */, 306 | ); 307 | name = InfoPlist.strings; 308 | sourceTree = ""; 309 | }; 310 | 2CFAD55117E5D42000980C70 /* InfoPlist.strings */ = { 311 | isa = PBXVariantGroup; 312 | children = ( 313 | 2CFAD55217E5D42000980C70 /* en */, 314 | ); 315 | name = InfoPlist.strings; 316 | sourceTree = ""; 317 | }; 318 | /* End PBXVariantGroup section */ 319 | 320 | /* Begin XCBuildConfiguration section */ 321 | 2CFAD55617E5D42000980C70 /* Debug */ = { 322 | isa = XCBuildConfiguration; 323 | buildSettings = { 324 | ALWAYS_SEARCH_USER_PATHS = NO; 325 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 326 | CLANG_CXX_LIBRARY = "libc++"; 327 | CLANG_ENABLE_MODULES = YES; 328 | CLANG_ENABLE_OBJC_ARC = YES; 329 | CLANG_WARN_BOOL_CONVERSION = YES; 330 | CLANG_WARN_CONSTANT_CONVERSION = YES; 331 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 332 | CLANG_WARN_EMPTY_BODY = YES; 333 | CLANG_WARN_ENUM_CONVERSION = YES; 334 | CLANG_WARN_INT_CONVERSION = YES; 335 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 336 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 337 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 338 | COPY_PHASE_STRIP = NO; 339 | GCC_C_LANGUAGE_STANDARD = gnu99; 340 | GCC_DYNAMIC_NO_PIC = NO; 341 | GCC_OPTIMIZATION_LEVEL = 0; 342 | GCC_PREPROCESSOR_DEFINITIONS = ( 343 | "DEBUG=1", 344 | "$(inherited)", 345 | ); 346 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 347 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 348 | GCC_WARN_UNDECLARED_SELECTOR = YES; 349 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 350 | GCC_WARN_UNUSED_FUNCTION = YES; 351 | GCC_WARN_UNUSED_VARIABLE = YES; 352 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 353 | ONLY_ACTIVE_ARCH = YES; 354 | SDKROOT = iphoneos; 355 | TARGETED_DEVICE_FAMILY = "1,2"; 356 | }; 357 | name = Debug; 358 | }; 359 | 2CFAD55717E5D42000980C70 /* Release */ = { 360 | isa = XCBuildConfiguration; 361 | buildSettings = { 362 | ALWAYS_SEARCH_USER_PATHS = NO; 363 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 364 | CLANG_CXX_LIBRARY = "libc++"; 365 | CLANG_ENABLE_MODULES = YES; 366 | CLANG_ENABLE_OBJC_ARC = YES; 367 | CLANG_WARN_BOOL_CONVERSION = YES; 368 | CLANG_WARN_CONSTANT_CONVERSION = YES; 369 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 370 | CLANG_WARN_EMPTY_BODY = YES; 371 | CLANG_WARN_ENUM_CONVERSION = YES; 372 | CLANG_WARN_INT_CONVERSION = YES; 373 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 374 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 375 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 376 | COPY_PHASE_STRIP = YES; 377 | ENABLE_NS_ASSERTIONS = NO; 378 | GCC_C_LANGUAGE_STANDARD = gnu99; 379 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 380 | GCC_WARN_UNDECLARED_SELECTOR = YES; 381 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 382 | GCC_WARN_UNUSED_FUNCTION = YES; 383 | GCC_WARN_UNUSED_VARIABLE = YES; 384 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 385 | SDKROOT = iphoneos; 386 | TARGETED_DEVICE_FAMILY = "1,2"; 387 | VALIDATE_PRODUCT = YES; 388 | }; 389 | name = Release; 390 | }; 391 | 2CFAD55917E5D42000980C70 /* Debug */ = { 392 | isa = XCBuildConfiguration; 393 | buildSettings = { 394 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 395 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 396 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 397 | GCC_PREFIX_HEADER = "popdowntable/popdowntable-Prefix.pch"; 398 | INFOPLIST_FILE = "popdowntable/popdowntable-Info.plist"; 399 | IPHONEOS_DEPLOYMENT_TARGET = 6.1; 400 | PRODUCT_NAME = "$(TARGET_NAME)"; 401 | WRAPPER_EXTENSION = app; 402 | }; 403 | name = Debug; 404 | }; 405 | 2CFAD55A17E5D42000980C70 /* Release */ = { 406 | isa = XCBuildConfiguration; 407 | buildSettings = { 408 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 409 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 410 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 411 | GCC_PREFIX_HEADER = "popdowntable/popdowntable-Prefix.pch"; 412 | INFOPLIST_FILE = "popdowntable/popdowntable-Info.plist"; 413 | IPHONEOS_DEPLOYMENT_TARGET = 6.1; 414 | PRODUCT_NAME = "$(TARGET_NAME)"; 415 | WRAPPER_EXTENSION = app; 416 | }; 417 | name = Release; 418 | }; 419 | 2CFAD55C17E5D42000980C70 /* Debug */ = { 420 | isa = XCBuildConfiguration; 421 | buildSettings = { 422 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/popdowntable.app/popdowntable"; 423 | FRAMEWORK_SEARCH_PATHS = ( 424 | "$(SDKROOT)/Developer/Library/Frameworks", 425 | "$(inherited)", 426 | "$(SYSTEM_APPS_DIR)/Xcode5-DP3.app/Contents/Developer/Library/Frameworks", 427 | ); 428 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 429 | GCC_PREFIX_HEADER = "popdowntable/popdowntable-Prefix.pch"; 430 | GCC_PREPROCESSOR_DEFINITIONS = ( 431 | "DEBUG=1", 432 | "$(inherited)", 433 | ); 434 | INFOPLIST_FILE = "popdowntableTests/popdowntableTests-Info.plist"; 435 | PRODUCT_NAME = "$(TARGET_NAME)"; 436 | TEST_HOST = "$(BUNDLE_LOADER)"; 437 | WRAPPER_EXTENSION = xctest; 438 | }; 439 | name = Debug; 440 | }; 441 | 2CFAD55D17E5D42000980C70 /* Release */ = { 442 | isa = XCBuildConfiguration; 443 | buildSettings = { 444 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/popdowntable.app/popdowntable"; 445 | FRAMEWORK_SEARCH_PATHS = ( 446 | "$(SDKROOT)/Developer/Library/Frameworks", 447 | "$(inherited)", 448 | "$(SYSTEM_APPS_DIR)/Xcode5-DP3.app/Contents/Developer/Library/Frameworks", 449 | ); 450 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 451 | GCC_PREFIX_HEADER = "popdowntable/popdowntable-Prefix.pch"; 452 | INFOPLIST_FILE = "popdowntableTests/popdowntableTests-Info.plist"; 453 | PRODUCT_NAME = "$(TARGET_NAME)"; 454 | TEST_HOST = "$(BUNDLE_LOADER)"; 455 | WRAPPER_EXTENSION = xctest; 456 | }; 457 | name = Release; 458 | }; 459 | /* End XCBuildConfiguration section */ 460 | 461 | /* Begin XCConfigurationList section */ 462 | 2CFAD51E17E5D41F00980C70 /* Build configuration list for PBXProject "popdowntable" */ = { 463 | isa = XCConfigurationList; 464 | buildConfigurations = ( 465 | 2CFAD55617E5D42000980C70 /* Debug */, 466 | 2CFAD55717E5D42000980C70 /* Release */, 467 | ); 468 | defaultConfigurationIsVisible = 0; 469 | defaultConfigurationName = Release; 470 | }; 471 | 2CFAD55817E5D42000980C70 /* Build configuration list for PBXNativeTarget "popdowntable" */ = { 472 | isa = XCConfigurationList; 473 | buildConfigurations = ( 474 | 2CFAD55917E5D42000980C70 /* Debug */, 475 | 2CFAD55A17E5D42000980C70 /* Release */, 476 | ); 477 | defaultConfigurationIsVisible = 0; 478 | defaultConfigurationName = Release; 479 | }; 480 | 2CFAD55B17E5D42000980C70 /* Build configuration list for PBXNativeTarget "popdowntableTests" */ = { 481 | isa = XCConfigurationList; 482 | buildConfigurations = ( 483 | 2CFAD55C17E5D42000980C70 /* Debug */, 484 | 2CFAD55D17E5D42000980C70 /* Release */, 485 | ); 486 | defaultConfigurationIsVisible = 0; 487 | defaultConfigurationName = Release; 488 | }; 489 | /* End XCConfigurationList section */ 490 | }; 491 | rootObject = 2CFAD51B17E5D41F00980C70 /* Project object */; 492 | } 493 | -------------------------------------------------------------------------------- /popdowntable/popdowntable.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /popdowntable/popdowntable.xcodeproj/project.xcworkspace/xcuserdata/alexdimango.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adimango/POPDownMenuTable/2993885b39061d3d4488df37b30101fe07cab552/popdowntable/popdowntable.xcodeproj/project.xcworkspace/xcuserdata/alexdimango.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /popdowntable/popdowntable.xcodeproj/xcuserdata/alexdimango.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 18 | 19 | 31 | 32 | 44 | 45 | 57 | 58 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /popdowntable/popdowntable.xcodeproj/xcuserdata/alexdimango.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 20 | 21 | 22 | 24 | 36 | 37 | 38 | 40 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /popdowntable/popdowntable.xcodeproj/xcuserdata/alexdimango.xcuserdatad/xcschemes/popdowntable.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 61 | 62 | 68 | 69 | 70 | 71 | 72 | 73 | 79 | 80 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /popdowntable/popdowntable.xcodeproj/xcuserdata/alexdimango.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | popdowntable.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 2CFAD52217E5D41F00980C70 16 | 17 | primary 18 | 19 | 20 | 2CFAD54617E5D42000980C70 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adimango/POPDownMenuTable/2993885b39061d3d4488df37b30101fe07cab552/popdowntable/popdowntable/.DS_Store -------------------------------------------------------------------------------- /popdowntable/popdowntable/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "60x60", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "ipad", 15 | "size" : "29x29", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "ipad", 20 | "size" : "29x29", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "ipad", 25 | "size" : "50x50", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "ipad", 30 | "size" : "50x50", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "72x72", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "72x72", 41 | "scale" : "2x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /popdowntable/popdowntable/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /popdowntable/popdowntable/POPDAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // POPDAppDelegate.h 3 | // popdowntable 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface POPDAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/POPDAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // POPDAppDelegate.m 3 | // popdowntable 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import "POPDAppDelegate.h" 10 | 11 | @implementation POPDAppDelegate 12 | 13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 14 | { 15 | // Override point for customization after application launch. 16 | [[UITableViewCell appearance] setBackgroundColor:[UIColor clearColor]]; 17 | return YES; 18 | 19 | } 20 | 21 | - (void)applicationWillResignActive:(UIApplication *)application 22 | { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 25 | } 26 | 27 | - (void)applicationDidEnterBackground:(UIApplication *)application 28 | { 29 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 30 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 31 | } 32 | 33 | - (void)applicationWillEnterForeground:(UIApplication *)application 34 | { 35 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 36 | } 37 | 38 | - (void)applicationDidBecomeActive:(UIApplication *)application 39 | { 40 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 41 | } 42 | 43 | - (void)applicationWillTerminate:(UIApplication *)application 44 | { 45 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/POPDSampleViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // POPDSampleViewController.h 3 | // popdowntable 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface POPDSampleViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/POPDSampleViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // POPDSampleViewController.m 3 | // popdowntable 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import "POPDSampleViewController.h" 10 | #import "POPDViewController.h" 11 | 12 | static NSString *kheader = @"menuSectionHeader"; 13 | static NSString *ksubSection = @"menuSubSection"; 14 | 15 | @interface POPDSampleViewController() 16 | 17 | @end 18 | 19 | @implementation POPDSampleViewController 20 | 21 | - (void)viewDidLoad 22 | { 23 | [super viewDidLoad]; 24 | 25 | NSArray *sucSectionsA = [NSArray arrayWithObjects:@"Live",@"My Subscriptions", nil]; 26 | NSArray *sucSectionsB = [NSArray arrayWithObjects:@"Populare",@"Trailer",@"Review", nil]; 27 | NSArray *sucSectionsC = [NSArray arrayWithObjects:@"Cover Stories",@"Popular Science",@"The Future Now", nil]; 28 | 29 | NSDictionary *sectionA = [NSDictionary dictionaryWithObjectsAndKeys: 30 | @"News & Politics", kheader, 31 | sucSectionsA, ksubSection, 32 | nil]; 33 | 34 | NSDictionary *sectionB = [NSDictionary dictionaryWithObjectsAndKeys: 35 | @"Film & Animation", kheader, 36 | sucSectionsB, ksubSection, 37 | nil]; 38 | 39 | NSDictionary *sectionC = [NSDictionary dictionaryWithObjectsAndKeys: 40 | @"Science & Technology", kheader, 41 | sucSectionsC, ksubSection, 42 | nil]; 43 | 44 | NSArray *menu = [NSArray arrayWithObjects:sectionA,sectionB,sectionC, nil]; 45 | POPDViewController *popMenu = [[POPDViewController alloc]initWithMenuSections:menu]; 46 | popMenu.delegate = self; 47 | popMenu.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 48 | //ios7 status bar 49 | popMenu.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0); 50 | 51 | [self addChildViewController:popMenu]; 52 | [self.view addSubview:popMenu.view]; 53 | 54 | } 55 | 56 | #pragma mark POPDViewController delegate 57 | 58 | -(void) didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 59 | 60 | NSLog(@"didSelectRowAtIndexPath: %d,%d",indexPath.section,indexPath.row); 61 | 62 | } 63 | 64 | 65 | - (void)didReceiveMemoryWarning 66 | { 67 | [super didReceiveMemoryWarning]; 68 | // Dispose of any resources that can be recreated. 69 | } 70 | 71 | @end 72 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/POPDViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // POPDViewController.h 3 | // popdowntable 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import 10 | #ifndef MB_STRONG 11 | #if __has_feature(objc_arc) 12 | #define MB_STRONG strong 13 | #else 14 | #define MB_STRONG retain 15 | #endif 16 | #endif 17 | 18 | #ifndef MB_WEAK 19 | #if __has_feature(objc_arc_weak) 20 | #define MB_WEAK weak 21 | #elif __has_feature(objc_arc) 22 | #define MB_WEAK unsafe_unretained 23 | #else 24 | #define MB_WEAK assign 25 | #endif 26 | #endif 27 | 28 | @protocol POPDDelegate 29 | 30 | -(void) didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 31 | 32 | @end 33 | 34 | 35 | @interface POPDViewController : UITableViewController 36 | - (id)initWithMenuSections:(NSArray *) menuSections; 37 | @property (MB_WEAK) id delegate; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/POPDViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // POPDViewController.m 3 | // popdowntable 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import "POPDViewController.h" 10 | #import "POPDCell.h" 11 | 12 | #define TABLECOLOR [UIColor colorWithRed:62.0/255.0 green:76.0/255.0 blue:87.0/255.0 alpha:1.0] 13 | #define CELLSELECTED [UIColor colorWithRed:52.0/255.0 green:64.0/255.0 blue:73.0/255.0 alpha:1.0] 14 | #define SEPARATOR [UIColor colorWithRed:31.0/255.0 green:38.0/255.0 blue:43.0/255.0 alpha:1.0] 15 | #define SEPSHADOW [UIColor colorWithRed:80.0/255.0 green:97.0/255.0 blue:110.0/255.0 alpha:1.0] 16 | #define SHADOW [UIColor colorWithRed:69.0/255.0 green:84.0/255.0 blue:95.0/255.0 alpha:1.0] 17 | #define TEXT [UIColor colorWithRed:223.0/255.0 green:223.0/255.0 blue:213.0/255.0 alpha:1.0] 18 | 19 | static NSString *kheader = @"menuSectionHeader"; 20 | static NSString *ksubSection = @"menuSubSection"; 21 | 22 | @interface POPDViewController () 23 | @property NSArray *sections; 24 | @property (strong, nonatomic) NSMutableArray *sectionsArray; 25 | @property (strong, nonatomic) NSMutableArray *showingArray; 26 | @end 27 | 28 | 29 | @implementation POPDViewController 30 | @synthesize delegate; 31 | 32 | - (id)initWithMenuSections:(NSArray *) menuSections 33 | { 34 | self = [super init]; 35 | if (self) { 36 | self.sections = menuSections; 37 | } 38 | return self; 39 | } 40 | 41 | - (void)viewDidLoad 42 | { 43 | [super viewDidLoad]; 44 | 45 | self.tableView.backgroundColor = TABLECOLOR; 46 | [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; 47 | 48 | self.tableView.frame = self.view.frame; 49 | 50 | self.sectionsArray = [NSMutableArray new]; 51 | self.showingArray = [NSMutableArray new]; 52 | [self setMenuSections:self.sections]; 53 | 54 | } 55 | 56 | - (void)setMenuSections:(NSArray *)menuSections{ 57 | 58 | for (NSDictionary *sec in menuSections) { 59 | 60 | NSString *header = [sec objectForKey:kheader]; 61 | NSArray *subSection = [sec objectForKey:ksubSection]; 62 | 63 | NSMutableArray *section = [NSMutableArray new]; 64 | [section addObject:header]; 65 | 66 | for (NSString *sub in subSection) { 67 | [section addObject:sub]; 68 | } 69 | [self.sectionsArray addObject:section]; 70 | [self.showingArray addObject:[NSNumber numberWithBool:NO]]; 71 | } 72 | 73 | [self.tableView reloadData]; 74 | } 75 | 76 | 77 | 78 | - (void)didReceiveMemoryWarning 79 | { 80 | [super didReceiveMemoryWarning]; 81 | // Dispose of any resources that can be recreated. 82 | } 83 | 84 | #pragma mark - Table view data source 85 | 86 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 87 | { 88 | return [self.sectionsArray count]; 89 | } 90 | 91 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 92 | { 93 | if (![[self.showingArray objectAtIndex:section]boolValue]) { 94 | return 1; 95 | } 96 | else{ 97 | return [[self.sectionsArray objectAtIndex:section]count];; 98 | } 99 | } 100 | 101 | - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 102 | 103 | if(indexPath.row ==0){ 104 | if([[self.showingArray objectAtIndex:indexPath.section]boolValue]){ 105 | [cell setBackgroundColor:CELLSELECTED]; 106 | }else{ 107 | [cell setBackgroundColor:[UIColor clearColor]]; 108 | } 109 | } 110 | } 111 | 112 | 113 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 114 | { 115 | static NSString *cellIdentifier = @"menuCell"; 116 | #warning : Use here your custom cell, instead of POPDCell 117 | 118 | POPDCell *cell = nil; 119 | cell = (POPDCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 120 | NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"POPDCell" owner:self options:nil]; 121 | 122 | if (cell == nil) { 123 | cell = [topLevelObjects objectAtIndex:0]; 124 | } 125 | 126 | cell.labelText.text = [[self.sectionsArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]; 127 | cell.labelText.textColor = TEXT; 128 | cell.separator.backgroundColor = SEPARATOR; 129 | cell.sepShadow.backgroundColor = SEPSHADOW; 130 | cell.shadow.backgroundColor = SHADOW; 131 | 132 | [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 133 | return cell; 134 | } 135 | 136 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 137 | 138 | if([[self.showingArray objectAtIndex:indexPath.section]boolValue]){ 139 | [self.showingArray setObject:[NSNumber numberWithBool:NO] atIndexedSubscript:indexPath.section]; 140 | }else{ 141 | [self.showingArray setObject:[NSNumber numberWithBool:YES] atIndexedSubscript:indexPath.section]; 142 | } 143 | [tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationFade]; 144 | 145 | [self.delegate didSelectRowAtIndexPath:indexPath]; 146 | } 147 | 148 | /* 149 | // Override to support conditional editing of the table view. 150 | - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 151 | { 152 | // Return NO if you do not want the specified item to be editable. 153 | return YES; 154 | } 155 | */ 156 | 157 | /* 158 | // Override to support editing the table view. 159 | - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 160 | { 161 | if (editingStyle == UITableViewCellEditingStyleDelete) { 162 | // Delete the row from the data source 163 | [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 164 | } 165 | else if (editingStyle == UITableViewCellEditingStyleInsert) { 166 | // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 167 | } 168 | } 169 | */ 170 | 171 | /* 172 | // Override to support rearranging the table view. 173 | - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath 174 | { 175 | } 176 | */ 177 | 178 | /* 179 | // Override to support conditional rearranging of the table view. 180 | - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath 181 | { 182 | // Return NO if you do not want the item to be re-orderable. 183 | return YES; 184 | } 185 | */ 186 | 187 | /* 188 | #pragma mark - Navigation 189 | 190 | // In a story board-based application, you will often want to do a little preparation before navigation 191 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 192 | { 193 | // Get the new view controller using [segue destinationViewController]. 194 | // Pass the selected object to the new view controller. 195 | } 196 | 197 | */ 198 | 199 | @end 200 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // popdowntable 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "POPDAppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([POPDAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/popdowntable-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | com.whardoo.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIMainStoryboardFile 28 | Main_iPhone 29 | UIMainStoryboardFile~ipad 30 | Main_iPad 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | UISupportedInterfaceOrientations~ipad 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationPortraitUpsideDown 45 | UIInterfaceOrientationLandscapeLeft 46 | UIInterfaceOrientationLandscapeRight 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /popdowntable/popdowntable/popdowntable-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /popdowntable/popdowntableTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /popdowntable/popdowntableTests/popdowntableTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | com.whardoo.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /popdowntable/popdowntableTests/popdowntableTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // popdowntableTests.m 3 | // popdowntableTests 4 | // 5 | // Created by Alex Di Mango on 15/09/2013. 6 | // Copyright (c) 2013 Alex Di Mango. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface popdowntableTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation popdowntableTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | 21 | // Set-up code here. 22 | } 23 | 24 | - (void)tearDown 25 | { 26 | // Tear-down code here. 27 | 28 | [super tearDown]; 29 | } 30 | 31 | - (void)testExample 32 | { 33 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 34 | } 35 | 36 | @end 37 | --------------------------------------------------------------------------------