├── CHViewControllerSwitcher-Info.plist ├── CHViewControllerSwitcher.xcodeproj ├── admin.mode1v3 ├── admin.pbxuser ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── admin.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── admin.xcuserdatad │ └── xcschemes │ ├── NETabVC.xcscheme │ ├── SwitcherTest-iPad.xcscheme │ └── xcschememanagement.plist ├── CHViewControllerSwitcher_Prefix.pch ├── Classes ├── AppDelegate.h ├── AppDelegate.m ├── CHViewControllerSwitcher.h ├── CHViewControllerSwitcher.m ├── Switcher.h ├── Switcher.m ├── TableVC.h └── TableVC.m ├── MainWindow.xib ├── README.markdown ├── Resources-iPad ├── MainWindow.xib └── Switcher.xib ├── Switcher.xib └── main.m /CHViewControllerSwitcher-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | UIApplicationExitsOnSuspend 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /CHViewControllerSwitcher.xcodeproj/admin.pbxuser: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | 1D3623240D0F684500981E51 /* AppDelegate.h */ = { 4 | uiCtxt = { 5 | sepNavIntBoundsRect = "{{0, 0}, {696, 658}}"; 6 | sepNavSelRange = "{298, 0}"; 7 | sepNavVisRange = "{0, 731}"; 8 | }; 9 | }; 10 | 1D3623250D0F684500981E51 /* AppDelegate.m */ = { 11 | uiCtxt = { 12 | sepNavIntBoundsRect = "{{0, 0}, {767, 1792}}"; 13 | sepNavSelRange = "{2956, 0}"; 14 | sepNavVisRange = "{781, 1300}"; 15 | sepNavWindowFrame = "{{15, 298}, {826, 755}}"; 16 | }; 17 | }; 18 | 1D6058900D05DD3D006BFB54 /* SwitcherTest */ = { 19 | activeExec = 0; 20 | executables = ( 21 | 844FE29613462DCD007E740B /* SwitcherTest */, 22 | ); 23 | }; 24 | 28D7ACF60DDB3853001CB0EB /* CHViewControllerSwitcher.h */ = { 25 | uiCtxt = { 26 | sepNavIntBoundsRect = "{{0, 0}, {696, 658}}"; 27 | sepNavSelRange = "{388, 0}"; 28 | sepNavVisRange = "{0, 905}"; 29 | }; 30 | }; 31 | 28D7ACF70DDB3853001CB0EB /* CHViewControllerSwitcher.m */ = { 32 | uiCtxt = { 33 | sepNavIntBoundsRect = "{{0, 0}, {696, 4704}}"; 34 | sepNavSelRange = "{1611, 0}"; 35 | sepNavVisRange = "{3269, 989}"; 36 | sepNavWindowFrame = "{{289, 248}, {826, 755}}"; 37 | }; 38 | }; 39 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 40 | activeBuildConfigurationName = Debug; 41 | activeExecutable = 844FE29613462DCD007E740B /* SwitcherTest */; 42 | activeSDKPreference = iphonesimulator4.2; 43 | activeTarget = 1D6058900D05DD3D006BFB54 /* SwitcherTest */; 44 | addToTargets = ( 45 | ); 46 | codeSenseManager = 844FE2A213462DE5007E740B /* Code sense */; 47 | executables = ( 48 | 844FE29613462DCD007E740B /* SwitcherTest */, 49 | 84E09CA0134893EB00811A9E /* SwitcherTest-iPad */, 50 | ); 51 | perUserDictionary = { 52 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { 53 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 54 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 55 | PBXFileTableDataSourceColumnWidthsKey = ( 56 | 20, 57 | 482, 58 | 20, 59 | 48, 60 | 43, 61 | 43, 62 | 20, 63 | ); 64 | PBXFileTableDataSourceColumnsKey = ( 65 | PBXFileDataSource_FiletypeID, 66 | PBXFileDataSource_Filename_ColumnID, 67 | PBXFileDataSource_Built_ColumnID, 68 | PBXFileDataSource_ObjectSize_ColumnID, 69 | PBXFileDataSource_Errors_ColumnID, 70 | PBXFileDataSource_Warnings_ColumnID, 71 | PBXFileDataSource_Target_ColumnID, 72 | ); 73 | }; 74 | PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = { 75 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 76 | PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID; 77 | PBXFileTableDataSourceColumnWidthsKey = ( 78 | 200, 79 | 532, 80 | ); 81 | PBXFileTableDataSourceColumnsKey = ( 82 | PBXFindDataSource_MessageID, 83 | PBXFindDataSource_LocationID, 84 | ); 85 | }; 86 | PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = { 87 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 88 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 89 | PBXFileTableDataSourceColumnWidthsKey = ( 90 | 20, 91 | 20, 92 | 494, 93 | 20, 94 | 48.16259765625, 95 | 43, 96 | 43, 97 | 20, 98 | ); 99 | PBXFileTableDataSourceColumnsKey = ( 100 | PBXFileDataSource_SCM_ColumnID, 101 | PBXFileDataSource_FiletypeID, 102 | PBXFileDataSource_Filename_ColumnID, 103 | PBXFileDataSource_Built_ColumnID, 104 | PBXFileDataSource_ObjectSize_ColumnID, 105 | PBXFileDataSource_Errors_ColumnID, 106 | PBXFileDataSource_Warnings_ColumnID, 107 | PBXFileDataSource_Target_ColumnID, 108 | ); 109 | }; 110 | PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { 111 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 112 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 113 | PBXFileTableDataSourceColumnWidthsKey = ( 114 | 20, 115 | 427, 116 | 60, 117 | 20, 118 | 48, 119 | 43, 120 | 43, 121 | ); 122 | PBXFileTableDataSourceColumnsKey = ( 123 | PBXFileDataSource_FiletypeID, 124 | PBXFileDataSource_Filename_ColumnID, 125 | PBXTargetDataSource_PrimaryAttribute, 126 | PBXFileDataSource_Built_ColumnID, 127 | PBXFileDataSource_ObjectSize_ColumnID, 128 | PBXFileDataSource_Errors_ColumnID, 129 | PBXFileDataSource_Warnings_ColumnID, 130 | ); 131 | }; 132 | PBXPerProjectTemplateStateSaveDate = 323533776; 133 | PBXWorkspaceStateSaveDate = 323533776; 134 | }; 135 | perUserProjectItems = { 136 | 848FA9EF1348BC0E00B2EC8A /* PlistBookmark */ = 848FA9EF1348BC0E00B2EC8A /* PlistBookmark */; 137 | 848FA9F01348BC0E00B2EC8A /* PBXBookmark */ = 848FA9F01348BC0E00B2EC8A /* PBXBookmark */; 138 | 848FA9F11348BC0E00B2EC8A /* PBXTextBookmark */ = 848FA9F11348BC0E00B2EC8A /* PBXTextBookmark */; 139 | 84B0CA9F13477577009F2189 /* PBXTextBookmark */ = 84B0CA9F13477577009F2189 /* PBXTextBookmark */; 140 | 84B0CB3F13487AD9009F2189 /* PBXTextBookmark */ = 84B0CB3F13487AD9009F2189 /* PBXTextBookmark */; 141 | 84B0CB6C134885EE009F2189 /* PBXTextBookmark */ = 84B0CB6C134885EE009F2189 /* PBXTextBookmark */; 142 | 84E09C6C1348930300811A9E /* PBXTextBookmark */ = 84E09C6C1348930300811A9E /* PBXTextBookmark */; 143 | 84E09C6D1348930300811A9E /* PBXTextBookmark */ = 84E09C6D1348930300811A9E /* PBXTextBookmark */; 144 | 84E09C711348935600811A9E /* PBXTextBookmark */ = 84E09C711348935600811A9E /* PBXTextBookmark */; 145 | 84E09C721348935600811A9E /* PBXTextBookmark */ = 84E09C721348935600811A9E /* PBXTextBookmark */; 146 | 84E09C731348935600811A9E /* PBXTextBookmark */ = 84E09C731348935600811A9E /* PBXTextBookmark */; 147 | 84E09C8C134893C400811A9E /* PBXTextBookmark */ = 84E09C8C134893C400811A9E /* PBXTextBookmark */; 148 | 84E09CCD134896E800811A9E /* PBXTextBookmark */ = 84E09CCD134896E800811A9E /* PBXTextBookmark */; 149 | }; 150 | sourceControlManager = 844FE2A113462DE5007E740B /* Source Control */; 151 | userBuildSettings = { 152 | }; 153 | }; 154 | 29B97316FDCFA39411CA2CEA /* main.m */ = { 155 | uiCtxt = { 156 | sepNavIntBoundsRect = "{{0, 0}, {696, 638}}"; 157 | sepNavSelRange = "{188, 0}"; 158 | sepNavVisRange = "{0, 394}"; 159 | }; 160 | }; 161 | 32CA4F630368D1EE00C91783 /* CHViewControllerSwitcher_Prefix.pch */ = { 162 | uiCtxt = { 163 | sepNavIntBoundsRect = "{{0, 0}, {696, 658}}"; 164 | sepNavSelRange = "{217, 0}"; 165 | sepNavVisRange = "{0, 217}"; 166 | }; 167 | }; 168 | 844FE29613462DCD007E740B /* SwitcherTest */ = { 169 | isa = PBXExecutable; 170 | activeArgIndices = ( 171 | ); 172 | argumentStrings = ( 173 | ); 174 | autoAttachOnCrash = 1; 175 | breakpointsEnabled = 0; 176 | configStateDict = { 177 | }; 178 | customDataFormattersEnabled = 1; 179 | dataTipCustomDataFormattersEnabled = 1; 180 | dataTipShowTypeColumn = 1; 181 | dataTipSortType = 0; 182 | debuggerPlugin = GDBDebugging; 183 | disassemblyDisplayState = 0; 184 | dylibVariantSuffix = ""; 185 | enableDebugStr = 1; 186 | environmentEntries = ( 187 | ); 188 | executableSystemSymbolLevel = 0; 189 | executableUserSymbolLevel = 0; 190 | libgmallocEnabled = 0; 191 | name = SwitcherTest; 192 | savedGlobals = { 193 | }; 194 | showTypeColumn = 0; 195 | sourceDirectories = ( 196 | ); 197 | }; 198 | 844FE2A113462DE5007E740B /* Source Control */ = { 199 | isa = PBXSourceControlManager; 200 | fallbackIsa = XCSourceControlManager; 201 | isSCMEnabled = 0; 202 | scmConfiguration = { 203 | repositoryNamesForRoots = { 204 | "" = ""; 205 | }; 206 | }; 207 | }; 208 | 844FE2A213462DE5007E740B /* Code sense */ = { 209 | isa = PBXCodeSenseManager; 210 | indexTemplatePath = ""; 211 | }; 212 | 848FA9EE1348BBEF00B2EC8A /* README.markdown */ = { 213 | uiCtxt = { 214 | sepNavIntBoundsRect = "{{0, 0}, {645, 656}}"; 215 | sepNavSelRange = "{24, 0}"; 216 | sepNavVisRange = "{0, 1360}"; 217 | }; 218 | }; 219 | 848FA9EF1348BC0E00B2EC8A /* PlistBookmark */ = { 220 | isa = PlistBookmark; 221 | fRef = 8D1107310486CEB800E47090 /* CHViewControllerSwitcher-Info.plist */; 222 | fallbackIsa = PBXBookmark; 223 | isK = 0; 224 | kPath = ( 225 | ); 226 | name = "/Users/admin/git/CHViewControllerSwitcher/CHViewControllerSwitcher-Info.plist"; 227 | rLen = 0; 228 | rLoc = 9223372036854775807; 229 | }; 230 | 848FA9F01348BC0E00B2EC8A /* PBXBookmark */ = { 231 | isa = PBXBookmark; 232 | fRef = 848FA9EE1348BBEF00B2EC8A /* README.markdown */; 233 | }; 234 | 848FA9F11348BC0E00B2EC8A /* PBXTextBookmark */ = { 235 | isa = PBXTextBookmark; 236 | fRef = 848FA9EE1348BBEF00B2EC8A /* README.markdown */; 237 | name = "README.markdown: 1"; 238 | rLen = 0; 239 | rLoc = 24; 240 | rType = 0; 241 | vrLen = 1360; 242 | vrLoc = 0; 243 | }; 244 | 84B0C8ED13464D85009F2189 /* TableVC.h */ = { 245 | uiCtxt = { 246 | sepNavIntBoundsRect = "{{0, 0}, {696, 658}}"; 247 | sepNavSelRange = "{184, 0}"; 248 | sepNavVisRange = "{0, 184}"; 249 | }; 250 | }; 251 | 84B0C8EE13464D85009F2189 /* TableVC.m */ = { 252 | uiCtxt = { 253 | sepNavFolds = "{\n c = (\n {\n l = DetailViewController;\n r = \"{4138, 24}\";\n s = 1;\n },\n {\n l = DetailViewController;\n r = \"{4189, 24}\";\n s = 1;\n },\n {\n l = \"Nib name\";\n r = \"{4239, 12}\";\n s = 1;\n }\n );\n r = \"{0, 4942}\";\n s = 0;\n}"; 254 | sepNavIntBoundsRect = "{{0, 0}, {696, 3104}}"; 255 | sepNavSelRange = "{3975, 20}"; 256 | sepNavVisRange = "{0, 791}"; 257 | }; 258 | }; 259 | 84B0CA9F13477577009F2189 /* PBXTextBookmark */ = { 260 | isa = PBXTextBookmark; 261 | fRef = 29B97316FDCFA39411CA2CEA /* main.m */; 262 | name = "main.m: 12"; 263 | rLen = 0; 264 | rLoc = 163; 265 | rType = 0; 266 | vrLen = 394; 267 | vrLoc = 0; 268 | }; 269 | 84B0CB3F13487AD9009F2189 /* PBXTextBookmark */ = { 270 | isa = PBXTextBookmark; 271 | fRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; 272 | name = "AppDelegate.m: 21"; 273 | rLen = 0; 274 | rLoc = 335; 275 | rType = 0; 276 | vrLen = 786; 277 | vrLoc = 0; 278 | }; 279 | 84B0CB5213487B6E009F2189 /* Switcher.h */ = { 280 | uiCtxt = { 281 | sepNavIntBoundsRect = "{{0, 0}, {809, 352}}"; 282 | sepNavSelRange = "{314, 0}"; 283 | sepNavVisRange = "{0, 225}"; 284 | }; 285 | }; 286 | 84B0CB5313487B6E009F2189 /* Switcher.m */ = { 287 | uiCtxt = { 288 | sepNavIntBoundsRect = "{{0, 0}, {645, 1328}}"; 289 | sepNavSelRange = "{1064, 0}"; 290 | sepNavVisRange = "{463, 1092}"; 291 | }; 292 | }; 293 | 84B0CB6C134885EE009F2189 /* PBXTextBookmark */ = { 294 | isa = PBXTextBookmark; 295 | fRef = 84B0C8EE13464D85009F2189 /* TableVC.m */; 296 | name = "MyTblVC.m: 151"; 297 | rLen = 20; 298 | rLoc = 3975; 299 | rType = 0; 300 | vrLen = 791; 301 | vrLoc = 0; 302 | }; 303 | 84E09C6C1348930300811A9E /* PBXTextBookmark */ = { 304 | isa = PBXTextBookmark; 305 | fRef = 1D3623240D0F684500981E51 /* AppDelegate.h */; 306 | name = "AppDelegate.h: 15"; 307 | rLen = 0; 308 | rLoc = 298; 309 | rType = 0; 310 | vrLen = 731; 311 | vrLoc = 0; 312 | }; 313 | 84E09C6D1348930300811A9E /* PBXTextBookmark */ = { 314 | isa = PBXTextBookmark; 315 | fRef = 28D7ACF70DDB3853001CB0EB /* CHViewControllerSwitcher.m */; 316 | name = "CHViewControllerSwitcher.m: 68"; 317 | rLen = 0; 318 | rLoc = 1611; 319 | rType = 0; 320 | vrLen = 989; 321 | vrLoc = 3269; 322 | }; 323 | 84E09C711348935600811A9E /* PBXTextBookmark */ = { 324 | isa = PBXTextBookmark; 325 | fRef = 28D7ACF60DDB3853001CB0EB /* CHViewControllerSwitcher.h */; 326 | name = "CHViewControllerSwitcher.h: 20"; 327 | rLen = 0; 328 | rLoc = 388; 329 | rType = 0; 330 | vrLen = 905; 331 | vrLoc = 0; 332 | }; 333 | 84E09C721348935600811A9E /* PBXTextBookmark */ = { 334 | isa = PBXTextBookmark; 335 | fRef = 32CA4F630368D1EE00C91783 /* CHViewControllerSwitcher_Prefix.pch */; 336 | name = "CHViewControllerSwitcher_Prefix.pch: 9"; 337 | rLen = 0; 338 | rLoc = 217; 339 | rType = 0; 340 | vrLen = 217; 341 | vrLoc = 0; 342 | }; 343 | 84E09C731348935600811A9E /* PBXTextBookmark */ = { 344 | isa = PBXTextBookmark; 345 | fRef = 84B0CB5213487B6E009F2189 /* Switcher.h */; 346 | name = "Switcher.h: 20"; 347 | rLen = 0; 348 | rLoc = 314; 349 | rType = 0; 350 | vrLen = 314; 351 | vrLoc = 0; 352 | }; 353 | 84E09C8C134893C400811A9E /* PBXTextBookmark */ = { 354 | isa = PBXTextBookmark; 355 | fRef = 84B0C8ED13464D85009F2189 /* TableVC.h */; 356 | name = "TableVC.h: 17"; 357 | rLen = 0; 358 | rLoc = 184; 359 | rType = 0; 360 | vrLen = 184; 361 | vrLoc = 0; 362 | }; 363 | 84E09C8E134893EB00811A9E /* SwitcherTest-iPad */ = { 364 | activeExec = 0; 365 | executables = ( 366 | 84E09CA0134893EB00811A9E /* SwitcherTest-iPad */, 367 | ); 368 | }; 369 | 84E09CA0134893EB00811A9E /* SwitcherTest-iPad */ = { 370 | isa = PBXExecutable; 371 | activeArgIndices = ( 372 | ); 373 | argumentStrings = ( 374 | ); 375 | autoAttachOnCrash = 1; 376 | breakpointsEnabled = 0; 377 | configStateDict = { 378 | }; 379 | customDataFormattersEnabled = 1; 380 | dataTipCustomDataFormattersEnabled = 1; 381 | dataTipShowTypeColumn = 1; 382 | dataTipSortType = 0; 383 | debuggerPlugin = GDBDebugging; 384 | disassemblyDisplayState = 0; 385 | dylibVariantSuffix = ""; 386 | enableDebugStr = 1; 387 | environmentEntries = ( 388 | ); 389 | executableSystemSymbolLevel = 0; 390 | executableUserSymbolLevel = 0; 391 | libgmallocEnabled = 0; 392 | name = "SwitcherTest-iPad"; 393 | showTypeColumn = 0; 394 | sourceDirectories = ( 395 | ); 396 | }; 397 | 84E09CCD134896E800811A9E /* PBXTextBookmark */ = { 398 | isa = PBXTextBookmark; 399 | fRef = 84B0CB5313487B6E009F2189 /* Switcher.m */; 400 | name = "Switcher.m: 42"; 401 | rLen = 0; 402 | rLoc = 1064; 403 | rType = 0; 404 | vrLen = 1092; 405 | vrLoc = 463; 406 | }; 407 | } 408 | -------------------------------------------------------------------------------- /CHViewControllerSwitcher.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 45; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1D3623260D0F684500981E51 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; }; 11 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 12 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 13 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 14 | 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; 15 | 2899E5220DE3E06400AC0155 /* Switcher.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* Switcher.xib */; }; 16 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; 17 | 28D7ACF80DDB3853001CB0EB /* CHViewControllerSwitcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* CHViewControllerSwitcher.m */; }; 18 | 84B0C8EF13464D85009F2189 /* TableVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B0C8EE13464D85009F2189 /* TableVC.m */; }; 19 | 84B0CB5413487B6E009F2189 /* Switcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B0CB5313487B6E009F2189 /* Switcher.m */; }; 20 | 84E09C93134893EB00811A9E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 21 | 84E09C94134893EB00811A9E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; }; 22 | 84E09C95134893EB00811A9E /* CHViewControllerSwitcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* CHViewControllerSwitcher.m */; }; 23 | 84E09C96134893EB00811A9E /* TableVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B0C8EE13464D85009F2189 /* TableVC.m */; }; 24 | 84E09C97134893EB00811A9E /* Switcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B0CB5313487B6E009F2189 /* Switcher.m */; }; 25 | 84E09C99134893EB00811A9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 26 | 84E09C9A134893EB00811A9E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 27 | 84E09C9B134893EB00811A9E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; 28 | 84E09CA4134893ED00811A9E /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84E09CA2134893ED00811A9E /* MainWindow.xib */; }; 29 | 84E09CA5134893ED00811A9E /* Switcher.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84E09CA3134893ED00811A9E /* Switcher.xib */; }; 30 | /* End PBXBuildFile section */ 31 | 32 | /* Begin PBXFileReference section */ 33 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 34 | 1D3623240D0F684500981E51 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 35 | 1D3623250D0F684500981E51 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 36 | 1D6058910D05DD3D006BFB54 /* CHViewControllerSwitcher.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CHViewControllerSwitcher.app; sourceTree = BUILT_PRODUCTS_DIR; }; 37 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 38 | 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 39 | 2899E5210DE3E06400AC0155 /* Switcher.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Switcher.xib; sourceTree = ""; }; 40 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 41 | 28D7ACF60DDB3853001CB0EB /* CHViewControllerSwitcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHViewControllerSwitcher.h; sourceTree = ""; }; 42 | 28D7ACF70DDB3853001CB0EB /* CHViewControllerSwitcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHViewControllerSwitcher.m; sourceTree = ""; }; 43 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 44 | 32CA4F630368D1EE00C91783 /* CHViewControllerSwitcher_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHViewControllerSwitcher_Prefix.pch; sourceTree = ""; }; 45 | 848FA9EE1348BBEF00B2EC8A /* README.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.markdown; sourceTree = ""; }; 46 | 84B0C8ED13464D85009F2189 /* TableVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableVC.h; sourceTree = ""; }; 47 | 84B0C8EE13464D85009F2189 /* TableVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableVC.m; sourceTree = ""; }; 48 | 84B0CB5213487B6E009F2189 /* Switcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Switcher.h; sourceTree = ""; }; 49 | 84B0CB5313487B6E009F2189 /* Switcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Switcher.m; sourceTree = ""; }; 50 | 84E09C9F134893EB00811A9E /* CHViewControllerSwitcher-Upgraded.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "CHViewControllerSwitcher-Upgraded.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 51 | 84E09CA2134893ED00811A9E /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainWindow.xib; path = "Resources-iPad/MainWindow.xib"; sourceTree = ""; }; 52 | 84E09CA3134893ED00811A9E /* Switcher.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Switcher.xib; path = "Resources-iPad/Switcher.xib"; sourceTree = ""; }; 53 | 8D1107310486CEB800E47090 /* CHViewControllerSwitcher-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "CHViewControllerSwitcher-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; 54 | /* End PBXFileReference section */ 55 | 56 | /* Begin PBXFrameworksBuildPhase section */ 57 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { 58 | isa = PBXFrameworksBuildPhase; 59 | buildActionMask = 2147483647; 60 | files = ( 61 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 62 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 63 | 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */, 64 | ); 65 | runOnlyForDeploymentPostprocessing = 0; 66 | }; 67 | 84E09C98134893EB00811A9E /* Frameworks */ = { 68 | isa = PBXFrameworksBuildPhase; 69 | buildActionMask = 2147483647; 70 | files = ( 71 | 84E09C99134893EB00811A9E /* Foundation.framework in Frameworks */, 72 | 84E09C9A134893EB00811A9E /* UIKit.framework in Frameworks */, 73 | 84E09C9B134893EB00811A9E /* CoreGraphics.framework in Frameworks */, 74 | ); 75 | runOnlyForDeploymentPostprocessing = 0; 76 | }; 77 | /* End PBXFrameworksBuildPhase section */ 78 | 79 | /* Begin PBXGroup section */ 80 | 080E96DDFE201D6D7F000001 /* Classes */ = { 81 | isa = PBXGroup; 82 | children = ( 83 | 84B0CB3B13487ABA009F2189 /* switcher */, 84 | 84B0CB3A13487AA7009F2189 /* demo */, 85 | ); 86 | path = Classes; 87 | sourceTree = ""; 88 | }; 89 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 90 | isa = PBXGroup; 91 | children = ( 92 | 1D6058910D05DD3D006BFB54 /* CHViewControllerSwitcher.app */, 93 | 84E09C9F134893EB00811A9E /* CHViewControllerSwitcher-Upgraded.app */, 94 | ); 95 | name = Products; 96 | sourceTree = ""; 97 | }; 98 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { 99 | isa = PBXGroup; 100 | children = ( 101 | 848FA9EE1348BBEF00B2EC8A /* README.markdown */, 102 | 080E96DDFE201D6D7F000001 /* Classes */, 103 | 29B97315FDCFA39411CA2CEA /* Other Sources */, 104 | 29B97317FDCFA39411CA2CEA /* Resources */, 105 | 84E09CA1134893EB00811A9E /* Resources-iPad */, 106 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 107 | 19C28FACFE9D520D11CA2CBB /* Products */, 108 | ); 109 | name = CustomTemplate; 110 | sourceTree = ""; 111 | }; 112 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { 113 | isa = PBXGroup; 114 | children = ( 115 | 32CA4F630368D1EE00C91783 /* CHViewControllerSwitcher_Prefix.pch */, 116 | 29B97316FDCFA39411CA2CEA /* main.m */, 117 | ); 118 | name = "Other Sources"; 119 | sourceTree = ""; 120 | }; 121 | 29B97317FDCFA39411CA2CEA /* Resources */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | 2899E5210DE3E06400AC0155 /* Switcher.xib */, 125 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */, 126 | 8D1107310486CEB800E47090 /* CHViewControllerSwitcher-Info.plist */, 127 | ); 128 | name = Resources; 129 | sourceTree = ""; 130 | }; 131 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 135 | 1D30AB110D05D00D00671497 /* Foundation.framework */, 136 | 288765A40DF7441C002DB57D /* CoreGraphics.framework */, 137 | ); 138 | name = Frameworks; 139 | sourceTree = ""; 140 | }; 141 | 84B0CB3A13487AA7009F2189 /* demo */ = { 142 | isa = PBXGroup; 143 | children = ( 144 | 1D3623240D0F684500981E51 /* AppDelegate.h */, 145 | 1D3623250D0F684500981E51 /* AppDelegate.m */, 146 | 84B0C8ED13464D85009F2189 /* TableVC.h */, 147 | 84B0C8EE13464D85009F2189 /* TableVC.m */, 148 | 84B0CB5213487B6E009F2189 /* Switcher.h */, 149 | 84B0CB5313487B6E009F2189 /* Switcher.m */, 150 | ); 151 | name = demo; 152 | sourceTree = ""; 153 | }; 154 | 84B0CB3B13487ABA009F2189 /* switcher */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | 28D7ACF60DDB3853001CB0EB /* CHViewControllerSwitcher.h */, 158 | 28D7ACF70DDB3853001CB0EB /* CHViewControllerSwitcher.m */, 159 | ); 160 | name = switcher; 161 | sourceTree = ""; 162 | }; 163 | 84E09CA1134893EB00811A9E /* Resources-iPad */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | 84E09CA2134893ED00811A9E /* MainWindow.xib */, 167 | 84E09CA3134893ED00811A9E /* Switcher.xib */, 168 | ); 169 | name = "Resources-iPad"; 170 | sourceTree = ""; 171 | }; 172 | /* End PBXGroup section */ 173 | 174 | /* Begin PBXNativeTarget section */ 175 | 1D6058900D05DD3D006BFB54 /* SwitcherTest */ = { 176 | isa = PBXNativeTarget; 177 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "SwitcherTest" */; 178 | buildPhases = ( 179 | 1D60588D0D05DD3D006BFB54 /* Resources */, 180 | 1D60588E0D05DD3D006BFB54 /* Sources */, 181 | 1D60588F0D05DD3D006BFB54 /* Frameworks */, 182 | ); 183 | buildRules = ( 184 | ); 185 | dependencies = ( 186 | ); 187 | name = SwitcherTest; 188 | productName = NETabVC; 189 | productReference = 1D6058910D05DD3D006BFB54 /* CHViewControllerSwitcher.app */; 190 | productType = "com.apple.product-type.application"; 191 | }; 192 | 84E09C8E134893EB00811A9E /* SwitcherTest-iPad */ = { 193 | isa = PBXNativeTarget; 194 | buildConfigurationList = 84E09C9C134893EB00811A9E /* Build configuration list for PBXNativeTarget "SwitcherTest-iPad" */; 195 | buildPhases = ( 196 | 84E09C8F134893EB00811A9E /* Resources */, 197 | 84E09C92134893EB00811A9E /* Sources */, 198 | 84E09C98134893EB00811A9E /* Frameworks */, 199 | ); 200 | buildRules = ( 201 | ); 202 | dependencies = ( 203 | ); 204 | name = "SwitcherTest-iPad"; 205 | productName = NETabVC; 206 | productReference = 84E09C9F134893EB00811A9E /* CHViewControllerSwitcher-Upgraded.app */; 207 | productType = "com.apple.product-type.application"; 208 | }; 209 | /* End PBXNativeTarget section */ 210 | 211 | /* Begin PBXProject section */ 212 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 213 | isa = PBXProject; 214 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CHViewControllerSwitcher" */; 215 | compatibilityVersion = "Xcode 3.1"; 216 | developmentRegion = English; 217 | hasScannedForEncodings = 1; 218 | knownRegions = ( 219 | English, 220 | Japanese, 221 | French, 222 | German, 223 | ); 224 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; 225 | projectDirPath = ""; 226 | projectRoot = ""; 227 | targets = ( 228 | 1D6058900D05DD3D006BFB54 /* SwitcherTest */, 229 | 84E09C8E134893EB00811A9E /* SwitcherTest-iPad */, 230 | ); 231 | }; 232 | /* End PBXProject section */ 233 | 234 | /* Begin PBXResourcesBuildPhase section */ 235 | 1D60588D0D05DD3D006BFB54 /* Resources */ = { 236 | isa = PBXResourcesBuildPhase; 237 | buildActionMask = 2147483647; 238 | files = ( 239 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, 240 | 2899E5220DE3E06400AC0155 /* Switcher.xib in Resources */, 241 | ); 242 | runOnlyForDeploymentPostprocessing = 0; 243 | }; 244 | 84E09C8F134893EB00811A9E /* Resources */ = { 245 | isa = PBXResourcesBuildPhase; 246 | buildActionMask = 2147483647; 247 | files = ( 248 | 84E09CA4134893ED00811A9E /* MainWindow.xib in Resources */, 249 | 84E09CA5134893ED00811A9E /* Switcher.xib in Resources */, 250 | ); 251 | runOnlyForDeploymentPostprocessing = 0; 252 | }; 253 | /* End PBXResourcesBuildPhase section */ 254 | 255 | /* Begin PBXSourcesBuildPhase section */ 256 | 1D60588E0D05DD3D006BFB54 /* Sources */ = { 257 | isa = PBXSourcesBuildPhase; 258 | buildActionMask = 2147483647; 259 | files = ( 260 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 261 | 1D3623260D0F684500981E51 /* AppDelegate.m in Sources */, 262 | 28D7ACF80DDB3853001CB0EB /* CHViewControllerSwitcher.m in Sources */, 263 | 84B0C8EF13464D85009F2189 /* TableVC.m in Sources */, 264 | 84B0CB5413487B6E009F2189 /* Switcher.m in Sources */, 265 | ); 266 | runOnlyForDeploymentPostprocessing = 0; 267 | }; 268 | 84E09C92134893EB00811A9E /* Sources */ = { 269 | isa = PBXSourcesBuildPhase; 270 | buildActionMask = 2147483647; 271 | files = ( 272 | 84E09C93134893EB00811A9E /* main.m in Sources */, 273 | 84E09C94134893EB00811A9E /* AppDelegate.m in Sources */, 274 | 84E09C95134893EB00811A9E /* CHViewControllerSwitcher.m in Sources */, 275 | 84E09C96134893EB00811A9E /* TableVC.m in Sources */, 276 | 84E09C97134893EB00811A9E /* Switcher.m in Sources */, 277 | ); 278 | runOnlyForDeploymentPostprocessing = 0; 279 | }; 280 | /* End PBXSourcesBuildPhase section */ 281 | 282 | /* Begin XCBuildConfiguration section */ 283 | 1D6058940D05DD3E006BFB54 /* Debug */ = { 284 | isa = XCBuildConfiguration; 285 | buildSettings = { 286 | ALWAYS_SEARCH_USER_PATHS = NO; 287 | COPY_PHASE_STRIP = NO; 288 | GCC_DYNAMIC_NO_PIC = NO; 289 | GCC_OPTIMIZATION_LEVEL = 0; 290 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 291 | GCC_PREFIX_HEADER = CHViewControllerSwitcher_Prefix.pch; 292 | INFOPLIST_FILE = "CHViewControllerSwitcher-Info.plist"; 293 | PRODUCT_NAME = CHViewControllerSwitcher; 294 | TARGETED_DEVICE_FAMILY = 1; 295 | }; 296 | name = Debug; 297 | }; 298 | 1D6058950D05DD3E006BFB54 /* Release */ = { 299 | isa = XCBuildConfiguration; 300 | buildSettings = { 301 | ALWAYS_SEARCH_USER_PATHS = NO; 302 | COPY_PHASE_STRIP = YES; 303 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 304 | GCC_PREFIX_HEADER = CHViewControllerSwitcher_Prefix.pch; 305 | INFOPLIST_FILE = "CHViewControllerSwitcher-Info.plist"; 306 | PRODUCT_NAME = CHViewControllerSwitcher; 307 | TARGETED_DEVICE_FAMILY = 1; 308 | VALIDATE_PRODUCT = YES; 309 | }; 310 | name = Release; 311 | }; 312 | 84E09C9D134893EB00811A9E /* Debug */ = { 313 | isa = XCBuildConfiguration; 314 | buildSettings = { 315 | ALWAYS_SEARCH_USER_PATHS = NO; 316 | ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; 317 | COPY_PHASE_STRIP = NO; 318 | GCC_DYNAMIC_NO_PIC = NO; 319 | GCC_OPTIMIZATION_LEVEL = 0; 320 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 321 | GCC_PREFIX_HEADER = CHViewControllerSwitcher_Prefix.pch; 322 | INFOPLIST_FILE = "CHViewControllerSwitcher-Info.plist"; 323 | PRODUCT_NAME = "CHViewControllerSwitcher-Upgraded"; 324 | SDKROOT = iphoneos; 325 | TARGETED_DEVICE_FAMILY = 2; 326 | }; 327 | name = Debug; 328 | }; 329 | 84E09C9E134893EB00811A9E /* Release */ = { 330 | isa = XCBuildConfiguration; 331 | buildSettings = { 332 | ALWAYS_SEARCH_USER_PATHS = NO; 333 | ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; 334 | COPY_PHASE_STRIP = YES; 335 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 336 | GCC_PREFIX_HEADER = CHViewControllerSwitcher_Prefix.pch; 337 | INFOPLIST_FILE = "CHViewControllerSwitcher-Info.plist"; 338 | PRODUCT_NAME = "CHViewControllerSwitcher-Upgraded"; 339 | SDKROOT = iphoneos; 340 | TARGETED_DEVICE_FAMILY = 2; 341 | VALIDATE_PRODUCT = YES; 342 | }; 343 | name = Release; 344 | }; 345 | C01FCF4F08A954540054247B /* Debug */ = { 346 | isa = XCBuildConfiguration; 347 | buildSettings = { 348 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 349 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 350 | GCC_C_LANGUAGE_STANDARD = c99; 351 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 352 | GCC_WARN_UNUSED_VARIABLE = YES; 353 | PREBINDING = NO; 354 | SDKROOT = iphoneos; 355 | }; 356 | name = Debug; 357 | }; 358 | C01FCF5008A954540054247B /* Release */ = { 359 | isa = XCBuildConfiguration; 360 | buildSettings = { 361 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 362 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 363 | GCC_C_LANGUAGE_STANDARD = c99; 364 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 365 | GCC_WARN_UNUSED_VARIABLE = YES; 366 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 367 | PREBINDING = NO; 368 | SDKROOT = iphoneos; 369 | }; 370 | name = Release; 371 | }; 372 | /* End XCBuildConfiguration section */ 373 | 374 | /* Begin XCConfigurationList section */ 375 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "SwitcherTest" */ = { 376 | isa = XCConfigurationList; 377 | buildConfigurations = ( 378 | 1D6058940D05DD3E006BFB54 /* Debug */, 379 | 1D6058950D05DD3E006BFB54 /* Release */, 380 | ); 381 | defaultConfigurationIsVisible = 0; 382 | defaultConfigurationName = Release; 383 | }; 384 | 84E09C9C134893EB00811A9E /* Build configuration list for PBXNativeTarget "SwitcherTest-iPad" */ = { 385 | isa = XCConfigurationList; 386 | buildConfigurations = ( 387 | 84E09C9D134893EB00811A9E /* Debug */, 388 | 84E09C9E134893EB00811A9E /* Release */, 389 | ); 390 | defaultConfigurationIsVisible = 0; 391 | defaultConfigurationName = Release; 392 | }; 393 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CHViewControllerSwitcher" */ = { 394 | isa = XCConfigurationList; 395 | buildConfigurations = ( 396 | C01FCF4F08A954540054247B /* Debug */, 397 | C01FCF5008A954540054247B /* Release */, 398 | ); 399 | defaultConfigurationIsVisible = 0; 400 | defaultConfigurationName = Release; 401 | }; 402 | /* End XCConfigurationList section */ 403 | }; 404 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 405 | } 406 | -------------------------------------------------------------------------------- /CHViewControllerSwitcher.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CHViewControllerSwitcher.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/NETabVC.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 14 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 40 | 41 | 47 | 48 | 49 | 50 | 51 | 52 | 59 | 60 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /CHViewControllerSwitcher.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/SwitcherTest-iPad.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 14 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 40 | 41 | 47 | 48 | 49 | 50 | 51 | 52 | 59 | 60 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /CHViewControllerSwitcher.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | NETabVC.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | SwitcherTest-iPad.xcscheme 13 | 14 | orderHint 15 | 1 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 1D6058900D05DD3D006BFB54 21 | 22 | primary 23 | 24 | 25 | 84E09C8E134893EB00811A9E 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /CHViewControllerSwitcher_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'CHViewControllerSwitcher' target in the 'CHViewControllerSwitcher' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import 8 | #endif 9 | -------------------------------------------------------------------------------- /Classes/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // CHViewControllerSwitcher 4 | // 5 | // Copyright 2011 cheolhee. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class CHViewControllerSwitcher; 11 | 12 | @interface AppDelegate : NSObject { 13 | UIWindow *window; 14 | CHViewControllerSwitcher *viewController; 15 | 16 | UINavigationController *_nvc; 17 | UIViewController *_vc1; 18 | UIViewController *_vc2; 19 | 20 | } 21 | 22 | @property (nonatomic, retain) IBOutlet UINavigationController *nvc; 23 | @property (nonatomic, retain) IBOutlet UIViewController *vc1; 24 | @property (nonatomic, retain) IBOutlet UIViewController *vc2; 25 | @property (nonatomic, retain) IBOutlet UIWindow *window; 26 | @property (nonatomic, retain) IBOutlet CHViewControllerSwitcher *viewController; 27 | 28 | 29 | @end 30 | 31 | -------------------------------------------------------------------------------- /Classes/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // CHViewControllerSwitcher 4 | // 5 | 6 | // Copyright 2011 cheolhee. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "CHViewControllerSwitcher.h" 11 | 12 | @implementation AppDelegate 13 | 14 | @synthesize nvc = _nvc; 15 | @synthesize vc1 = _vc1; 16 | @synthesize vc2 = _vc2; 17 | @synthesize window; 18 | @synthesize viewController; 19 | 20 | 21 | #pragma mark - 22 | #pragma mark Application lifecycle 23 | 24 | 25 | 26 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 27 | 28 | // Override point for customization after application launch. 29 | 30 | // Add the view controller's view to the window and display. 31 | 32 | 33 | NSArray * ar = 34 | [NSArray arrayWithObjects:self.nvc, self.vc1, self.vc2, nil]; 35 | 36 | [viewController setViewControllers:ar]; 37 | 38 | 39 | 40 | [self.window addSubview:viewController.view]; 41 | 42 | 43 | [self.window makeKeyAndVisible]; 44 | 45 | return YES; 46 | } 47 | 48 | 49 | - (void)applicationWillResignActive:(UIApplication *)application { 50 | /* 51 | 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. 52 | 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. 53 | */ 54 | } 55 | 56 | 57 | - (void)applicationDidEnterBackground:(UIApplication *)application { 58 | /* 59 | 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. 60 | If your application supports background execution, called instead of applicationWillTerminate: when the user quits. 61 | */ 62 | } 63 | 64 | 65 | - (void)applicationWillEnterForeground:(UIApplication *)application { 66 | /* 67 | Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. 68 | */ 69 | } 70 | 71 | 72 | - (void)applicationDidBecomeActive:(UIApplication *)application { 73 | /* 74 | 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. 75 | */ 76 | } 77 | 78 | 79 | - (void)applicationWillTerminate:(UIApplication *)application { 80 | /* 81 | Called when the application is about to terminate. 82 | See also applicationDidEnterBackground:. 83 | */ 84 | } 85 | 86 | 87 | #pragma mark - 88 | #pragma mark Memory management 89 | 90 | - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 91 | /* 92 | Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. 93 | */ 94 | } 95 | 96 | 97 | - (void)dealloc { 98 | [viewController release]; 99 | [window release]; 100 | self.nvc = nil; 101 | self.vc1 = nil; 102 | self.vc2 = nil; 103 | 104 | [super dealloc]; 105 | } 106 | 107 | 108 | @end 109 | -------------------------------------------------------------------------------- /Classes/CHViewControllerSwitcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // CHViewControllerSwitcher.h 3 | // CHViewControllerSwitcher 4 | // 5 | // Copyright 2011 cheolhee. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface CHViewControllerSwitcher : UIViewController { 11 | 12 | NSMutableArray *_viewControllers; 13 | 14 | UIViewController *_selectedViewController; 15 | 16 | UIView *_layoutView; 17 | 18 | NSInteger _oldIndex; 19 | NSUInteger _selectedIndex; 20 | 21 | BOOL _useCustomFrameSize; 22 | CGRect _frameForPortrait; 23 | CGRect _frameForLandscape; 24 | 25 | } 26 | 27 | @property (nonatomic, retain) IBOutlet UIView *layoutView; 28 | @property (nonatomic, assign) BOOL useCustomFrameSize; 29 | @property (nonatomic, assign) NSUInteger selectedIndex; 30 | @property (nonatomic, assign) UIViewController *selectedViewController; 31 | @property (nonatomic, assign) CGRect frameForPortrait; 32 | @property (nonatomic, assign) CGRect frameForLandscape; 33 | @property (nonatomic, copy) NSArray *viewControllers; 34 | 35 | 36 | 37 | 38 | @end 39 | 40 | -------------------------------------------------------------------------------- /Classes/CHViewControllerSwitcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // CHViewControllerSwitcher.m 3 | // CHViewControllerSwitcher 4 | // 5 | // Copyright 2011 cheolhee. All rights reserved. 6 | // 7 | 8 | #import "CHViewControllerSwitcher.h" 9 | 10 | 11 | @interface CHViewControllerSwitcher (NEPrivateMethods) 12 | 13 | -(void)layoutSubview; 14 | -(void)setSelectedIndex:(NSUInteger)idx force:(BOOL)force; 15 | 16 | @end 17 | 18 | @implementation CHViewControllerSwitcher 19 | 20 | @synthesize useCustomFrameSize = _useCustomFrameSize; 21 | @synthesize selectedIndex = _selectedIndex; 22 | @synthesize selectedViewController = _selectedViewController; 23 | @synthesize layoutView = _layoutView; 24 | @synthesize frameForPortrait = _frameForPortrait; 25 | @synthesize frameForLandscape = _frameForLandscape; 26 | @synthesize viewControllers = _viewControllers; 27 | 28 | 29 | 30 | //* 31 | // The designated initializer. Override to perform setup that is required before the view is loaded. 32 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 33 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 34 | if (self) { 35 | _useCustomFrameSize = NO; 36 | _selectedViewController = nil; 37 | // Custom initialization 38 | } 39 | return self; 40 | } 41 | 42 | -(void)awakeFromNib { 43 | _useCustomFrameSize = NO; 44 | _selectedViewController = nil; 45 | } 46 | 47 | -(id)init { 48 | self = [super init]; 49 | if (self) { 50 | _useCustomFrameSize = NO; 51 | _selectedViewController = nil; 52 | } 53 | return self; 54 | } 55 | 56 | //*/ 57 | 58 | /* 59 | // Implement loadView to create a view hierarchy programmatically, without using a nib. 60 | - (void)loadView { 61 | } 62 | */ 63 | 64 | /* 65 | // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 66 | - (void)viewDidLoad { 67 | [super viewDidLoad]; 68 | } 69 | /*/ 70 | 71 | 72 | -(NSArray*)viewControllers { 73 | if (!_viewControllers) { 74 | return nil; 75 | } 76 | return [NSArray arrayWithArray:_viewControllers]; 77 | } 78 | 79 | -(void)setViewControllers:(NSArray *)vcs { 80 | for (UIViewController *vc in _viewControllers) { 81 | [vc.view removeFromSuperview]; 82 | } 83 | [_viewControllers release]; 84 | 85 | int count = vcs.count; 86 | _viewControllers = [[NSMutableArray alloc] initWithCapacity:count]; 87 | 88 | for (UIViewController *vc in vcs) { 89 | [_viewControllers addObject:vc]; 90 | } 91 | 92 | _selectedViewController = nil; 93 | int idx = _selectedIndex; 94 | if (idx<0 || idx>=count) { 95 | idx = 0; 96 | } 97 | 98 | [self setSelectedIndex:idx force:YES]; 99 | } 100 | 101 | 102 | -(void)setSelectedViewController:(UIViewController *)viewController { 103 | NSUInteger idx = [_viewControllers indexOfObject:viewController]; 104 | if (idx!=NSNotFound) { 105 | [self setSelectedIndex:idx]; 106 | } 107 | } 108 | 109 | -(void)setSelectedIndex:(NSUInteger)idx { 110 | [self setSelectedIndex:idx force:NO]; 111 | } 112 | 113 | -(void)setSelectedIndex:(NSUInteger)idx force:(BOOL)force { 114 | 115 | static BOOL animated = NO; 116 | 117 | if (!_selectedViewController) {//_selectedIndex==NSNotFound) { 118 | UIViewController *newVC = [_viewControllers objectAtIndex:idx]; 119 | _selectedIndex = idx; 120 | _selectedViewController = newVC; 121 | 122 | [newVC viewWillAppear:animated]; 123 | [self layoutSubview]; 124 | [newVC viewDidAppear:animated]; 125 | } else 126 | if (force || idx!=_selectedIndex) { 127 | 128 | UIViewController *oldVC = [_viewControllers objectAtIndex:_selectedIndex]; 129 | UIViewController *newVC = [_viewControllers objectAtIndex:idx]; 130 | _selectedIndex = idx; 131 | _selectedViewController = newVC; 132 | 133 | [oldVC.view removeFromSuperview]; 134 | [oldVC viewWillDisappear:animated]; 135 | [newVC viewWillAppear:animated]; 136 | 137 | [self layoutSubview]; 138 | 139 | [oldVC viewDidDisappear:animated]; 140 | [newVC viewDidAppear:animated]; 141 | 142 | } 143 | 144 | 145 | } 146 | 147 | - (void)viewWillAppear:(BOOL)animated { 148 | [super viewWillAppear:animated]; 149 | [self.selectedViewController viewWillAppear:animated]; 150 | [self layoutSubview]; 151 | } 152 | 153 | 154 | - (void)viewDidAppear:(BOOL)animated { 155 | [super viewDidAppear:animated]; 156 | [self.selectedViewController viewDidAppear:animated]; 157 | } 158 | 159 | 160 | - (void)viewWillDisappear:(BOOL)animated { 161 | [super viewWillDisappear:animated]; 162 | [self.selectedViewController viewWillDisappear:animated]; 163 | } 164 | 165 | 166 | - (void)viewDidDisappear:(BOOL)animated { 167 | [super viewDidDisappear:animated]; 168 | [self.selectedViewController viewDidDisappear:animated]; 169 | } 170 | 171 | - (void)layoutSubviewForInterfaceOrientation:(UIInterfaceOrientation)orientation { 172 | 173 | UIViewController *vc = self.selectedViewController; 174 | UIView *v = vc.view; 175 | #ifdef DEBUG 176 | NSLog(@"selectedIndex=%d", _selectedIndex); 177 | NSLog(@"selectedVC=%@", _selectedViewController); 178 | NSLog(@"v=%@", v); 179 | #endif 180 | if (v) { 181 | if (_useCustomFrameSize) { 182 | CGRect frame = UIInterfaceOrientationIsPortrait(orientation) 183 | ? _frameForPortrait : _frameForLandscape; 184 | self.layoutView.frame = frame; 185 | } 186 | v.frame = self.layoutView.bounds; 187 | if (!v.superview) { 188 | [self.layoutView addSubview:v]; 189 | } 190 | // static BOOL _f = NO;//YES; 191 | // 192 | // if (_f) { 193 | // 194 | // if ([vc isKindOfClass:[UINavigationController class]]) { 195 | // UINavigationController *nvc = (UINavigationController*)vc; 196 | // BOOL f = nvc.navigationBarHidden; 197 | // nvc.navigationBarHidden = !f; 198 | // nvc.navigationBarHidden = f; 199 | // } 200 | // _f = NO; 201 | // } 202 | } 203 | 204 | } 205 | 206 | - (void)layoutSubview { 207 | [self layoutSubviewForInterfaceOrientation:self.interfaceOrientation]; 208 | } 209 | 210 | 211 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 212 | return YES; 213 | } 214 | 215 | - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 216 | { 217 | [self.selectedViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 218 | } 219 | 220 | 221 | - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 222 | { 223 | [self.selectedViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; 224 | 225 | #ifdef DEBUG 226 | NSLog(@"%@", self.selectedViewController); 227 | NSLog(@"%@", self.selectedViewController.view); 228 | #endif 229 | } 230 | 231 | 232 | - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 233 | { 234 | [self.selectedViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; 235 | // Re-tile views. 236 | [self layoutSubviewForInterfaceOrientation:toInterfaceOrientation]; 237 | } 238 | 239 | 240 | - (void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 241 | { 242 | [self.selectedViewController willAnimateFirstHalfOfRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; 243 | } 244 | 245 | 246 | - (void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 247 | { 248 | [self.selectedViewController didAnimateFirstHalfOfRotationToInterfaceOrientation:toInterfaceOrientation]; 249 | } 250 | 251 | 252 | - (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration 253 | { 254 | [self.selectedViewController willAnimateSecondHalfOfRotationFromInterfaceOrientation:fromInterfaceOrientation duration:duration]; 255 | } 256 | 257 | //- (void)didReceiveMemoryWarning { 258 | // [super didReceiveMemoryWarning]; 259 | //} 260 | 261 | - (void)viewDidUnload { 262 | self.layoutView = nil; 263 | } 264 | 265 | 266 | - (void)dealloc { 267 | _selectedViewController = nil; 268 | [_viewControllers release]; 269 | _viewControllers = nil; 270 | self.layoutView = nil; 271 | 272 | [super dealloc]; 273 | } 274 | 275 | @end 276 | -------------------------------------------------------------------------------- /Classes/Switcher.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyVC.h 3 | // CHViewControllerSwitcher 4 | // 5 | // Created by admin on 11/04/03. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CHViewControllerSwitcher.h" 11 | 12 | @interface Switcher : CHViewControllerSwitcher { 13 | 14 | } 15 | 16 | -(IBAction)switchViews:(UISegmentedControl*)seg; 17 | 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Classes/Switcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // MyVC.m 3 | // CHViewControllerSwitcher 4 | // 5 | // Created by admin on 11/04/03. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "Switcher.h" 10 | 11 | 12 | @implementation Switcher 13 | 14 | 15 | -(IBAction)switchViews:(UISegmentedControl*)seg { 16 | self.selectedIndex = seg.selectedSegmentIndex; 17 | } 18 | 19 | // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. 20 | /* 21 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 22 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 23 | if (self) { 24 | // Custom initialization. 25 | } 26 | return self; 27 | } 28 | */ 29 | 30 | /* 31 | // Implement loadView to create a view hierarchy programmatically, without using a nib. 32 | - (void)loadView { 33 | } 34 | */ 35 | 36 | - (void)viewDidLoad { 37 | [super viewDidLoad]; 38 | 39 | if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 40 | self.frameForPortrait = CGRectMake(20, 74, 728, 865); 41 | self.frameForLandscape = CGRectMake(20, 74, 400, 609); 42 | 43 | } else { 44 | self.frameForPortrait = CGRectMake(20, 50, 280, 350); 45 | self.frameForLandscape = CGRectMake(20, 50, 300, 180); 46 | 47 | } 48 | 49 | self.useCustomFrameSize = YES; 50 | 51 | } 52 | 53 | /* 54 | // Override to allow orientations other than the default portrait orientation. 55 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 56 | // Return YES for supported orientations. 57 | return (interfaceOrientation == UIInterfaceOrientationPortrait); 58 | } 59 | */ 60 | 61 | - (void)didReceiveMemoryWarning { 62 | // Releases the view if it doesn't have a superview. 63 | [super didReceiveMemoryWarning]; 64 | 65 | // Release any cached data, images, etc. that aren't in use. 66 | } 67 | 68 | - (void)viewDidUnload { 69 | [super viewDidUnload]; 70 | // Release any retained subviews of the main view. 71 | // e.g. self.myOutlet = nil; 72 | } 73 | 74 | 75 | - (void)dealloc { 76 | [super dealloc]; 77 | } 78 | 79 | 80 | @end 81 | -------------------------------------------------------------------------------- /Classes/TableVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyTblVC.h 3 | // CHViewControllerSwitcher 4 | // 5 | 6 | // Copyright 2011 cheolhee. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface TableVC : UITableViewController { 13 | 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/TableVC.m: -------------------------------------------------------------------------------- 1 | // 2 | // MyTblVC.m 3 | // CHViewControllerSwitcher 4 | // 5 | 6 | // Copyright 2011 cheolhee. All rights reserved. 7 | // 8 | 9 | #import "TableVC.h" 10 | 11 | 12 | @implementation TableVC 13 | 14 | 15 | #pragma mark - 16 | #pragma mark Initialization 17 | 18 | /* 19 | - (id)initWithStyle:(UITableViewStyle)style { 20 | // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. 21 | self = [super initWithStyle:style]; 22 | if (self) { 23 | // Custom initialization. 24 | } 25 | return self; 26 | } 27 | */ 28 | 29 | 30 | #pragma mark - 31 | #pragma mark View lifecycle 32 | 33 | /* 34 | - (void)viewDidLoad { 35 | [super viewDidLoad]; 36 | 37 | // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 38 | // self.navigationItem.rightBarButtonItem = self.editButtonItem; 39 | } 40 | */ 41 | 42 | /* 43 | - (void)viewWillAppear:(BOOL)animated { 44 | [super viewWillAppear:animated]; 45 | } 46 | */ 47 | /* 48 | - (void)viewDidAppear:(BOOL)animated { 49 | [super viewDidAppear:animated]; 50 | } 51 | */ 52 | /* 53 | - (void)viewWillDisappear:(BOOL)animated { 54 | [super viewWillDisappear:animated]; 55 | } 56 | */ 57 | /* 58 | - (void)viewDidDisappear:(BOOL)animated { 59 | [super viewDidDisappear:animated]; 60 | } 61 | */ 62 | /* 63 | // Override to allow orientations other than the default portrait orientation. 64 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 65 | // Return YES for supported orientations. 66 | return (interfaceOrientation == UIInterfaceOrientationPortrait); 67 | } 68 | */ 69 | 70 | 71 | #pragma mark - 72 | #pragma mark Table view data source 73 | 74 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 75 | // Return the number of sections. 76 | return 3; 77 | } 78 | 79 | 80 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 81 | // Return the number of rows in the section. 82 | return 5; 83 | } 84 | 85 | 86 | // Customize the appearance of table view cells. 87 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 88 | 89 | static NSString *CellIdentifier = @"Cell"; 90 | 91 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 92 | if (cell == nil) { 93 | cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 94 | } 95 | 96 | // Configure the cell... 97 | cell.textLabel.text = [NSString stringWithFormat:@"%02d %04d" 98 | , indexPath.section, indexPath.row]; 99 | 100 | return cell; 101 | } 102 | 103 | 104 | /* 105 | // Override to support conditional editing of the table view. 106 | - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 107 | // Return NO if you do not want the specified item to be editable. 108 | return YES; 109 | } 110 | */ 111 | 112 | 113 | /* 114 | // Override to support editing the table view. 115 | - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 116 | 117 | if (editingStyle == UITableViewCellEditingStyleDelete) { 118 | // Delete the row from the data source. 119 | [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 120 | } 121 | else if (editingStyle == UITableViewCellEditingStyleInsert) { 122 | // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view. 123 | } 124 | } 125 | */ 126 | 127 | 128 | /* 129 | // Override to support rearranging the table view. 130 | - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { 131 | } 132 | */ 133 | 134 | 135 | /* 136 | // Override to support conditional rearranging of the table view. 137 | - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { 138 | // Return NO if you do not want the item to be re-orderable. 139 | return YES; 140 | } 141 | */ 142 | 143 | 144 | #pragma mark - 145 | #pragma mark Table view delegate 146 | 147 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 148 | 149 | TableVC *vc = [[TableVC alloc] init]; 150 | 151 | [self.navigationController pushViewController:vc animated:1]; 152 | [vc release]; 153 | // Navigation logic may go here. Create and push another view controller. 154 | /* 155 | <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; 156 | // ... 157 | // Pass the selected object to the new view controller. 158 | [self.navigationController pushViewController:detailViewController animated:YES]; 159 | [detailViewController release]; 160 | */ 161 | } 162 | 163 | 164 | #pragma mark - 165 | #pragma mark Memory management 166 | 167 | - (void)didReceiveMemoryWarning { 168 | // Releases the view if it doesn't have a superview. 169 | [super didReceiveMemoryWarning]; 170 | 171 | // Relinquish ownership any cached data, images, etc. that aren't in use. 172 | } 173 | 174 | - (void)viewDidUnload { 175 | // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. 176 | // For example: self.myOutlet = nil; 177 | } 178 | 179 | 180 | - (void)dealloc { 181 | [super dealloc]; 182 | } 183 | 184 | 185 | @end 186 | 187 | -------------------------------------------------------------------------------- /MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 10J869 6 | 823 7 | 1038.35 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 132 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | Switcher 45 | 46 | 47 | 1 48 | 49 | IBCocoaTouchFramework 50 | NO 51 | 52 | 53 | 54 | 292 55 | {320, 480} 56 | 57 | 1 58 | MSAxIDEAA 59 | 60 | NO 61 | NO 62 | 63 | IBCocoaTouchFramework 64 | YES 65 | 66 | 67 | 68 | 69 | 1 70 | 71 | IBCocoaTouchFramework 72 | NO 73 | 74 | 75 | 256 76 | {0, 0} 77 | NO 78 | YES 79 | YES 80 | IBCocoaTouchFramework 81 | 82 | 83 | 84 | 256 85 | {{0, 436}, {320, 44}} 86 | NO 87 | YES 88 | 4 89 | YES 90 | IBCocoaTouchFramework 91 | 92 | 93 | YES 94 | 95 | 96 | 97 | 274 98 | {320, 372} 99 | 100 | 101 | 3 102 | MQA 103 | 104 | YES 105 | IBCocoaTouchFramework 106 | YES 107 | NO 108 | 1 109 | 0 110 | YES 111 | 44 112 | 22 113 | 22 114 | 115 | 116 | YES 117 | 118 | IBCocoaTouchFramework 119 | 1 120 | 121 | 7 122 | 123 | 124 | IBCocoaTouchFramework 125 | 126 | 5 127 | 128 | 129 | IBCocoaTouchFramework 130 | 1 131 | 132 | 9 133 | 134 | 135 | 136 | 137 | Navigation 138 | 139 | IBCocoaTouchFramework 140 | 1 141 | 142 | 13 143 | 144 | IBCocoaTouchFramework 145 | 146 | 147 | 148 | 149 | 1 150 | 151 | IBCocoaTouchFramework 152 | NO 153 | 154 | 155 | NO 156 | 157 | 158 | 159 | 160 | 274 161 | {320, 480} 162 | 163 | 1 164 | MSAwLjQwMDAwMDAwNiAwLjQwMDAwMDAwNgA 165 | 166 | IBCocoaTouchFramework 167 | 168 | 169 | 1 170 | 171 | IBCocoaTouchFramework 172 | NO 173 | 174 | 175 | 176 | 177 | 274 178 | {320, 480} 179 | 180 | YES 181 | YES 182 | IBCocoaTouchFramework 183 | Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. 184 | 185 | 2 186 | IBCocoaTouchFramework 187 | 188 | 189 | 190 | 1 191 | 192 | IBCocoaTouchFramework 193 | NO 194 | 195 | 196 | 197 | 198 | YES 199 | 200 | 201 | delegate 202 | 203 | 204 | 205 | 4 206 | 207 | 208 | 209 | window 210 | 211 | 212 | 213 | 14 214 | 215 | 216 | 217 | delegate 218 | 219 | 220 | 221 | 25 222 | 223 | 224 | 225 | dataSource 226 | 227 | 228 | 229 | 26 230 | 231 | 232 | 233 | nvc 234 | 235 | 236 | 237 | 32 238 | 239 | 240 | 241 | vc1 242 | 243 | 244 | 245 | 35 246 | 247 | 248 | 249 | vc2 250 | 251 | 252 | 253 | 36 254 | 255 | 256 | 257 | viewController 258 | 259 | 260 | 261 | 55 262 | 263 | 264 | 265 | 266 | YES 267 | 268 | 0 269 | 270 | 271 | 272 | 273 | 274 | -1 275 | 276 | 277 | File's Owner 278 | 279 | 280 | 3 281 | 282 | 283 | NETabVC App Delegate 284 | 285 | 286 | -2 287 | 288 | 289 | 290 | 291 | 10 292 | 293 | 294 | 295 | 296 | 12 297 | 298 | 299 | 300 | 301 | 16 302 | 303 | 304 | YES 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 17 313 | 314 | 315 | YES 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 18 326 | 327 | 328 | 329 | 330 | 19 331 | 332 | 333 | YES 334 | 335 | 336 | 337 | 338 | 339 | 20 340 | 341 | 342 | 343 | 344 | 24 345 | 346 | 347 | 348 | 349 | 27 350 | 351 | 352 | 353 | 354 | 28 355 | 356 | 357 | 358 | 359 | 29 360 | 361 | 362 | 363 | 364 | 30 365 | 366 | 367 | 368 | 369 | 33 370 | 371 | 372 | YES 373 | 374 | 375 | 376 | 377 | 378 | 34 379 | 380 | 381 | YES 382 | 383 | 384 | 385 | 386 | 387 | 37 388 | 389 | 390 | 391 | 392 | 39 393 | 394 | 395 | 396 | 397 | 398 | 399 | YES 400 | 401 | YES 402 | -1.CustomClassName 403 | -2.CustomClassName 404 | 10.CustomClassName 405 | 10.IBEditorWindowLastContentRect 406 | 10.IBPluginDependency 407 | 12.IBEditorWindowLastContentRect 408 | 12.IBPluginDependency 409 | 16.IBEditorWindowLastContentRect 410 | 16.IBPluginDependency 411 | 17.CustomClassName 412 | 17.IBPluginDependency 413 | 18.IBPluginDependency 414 | 19.IBPluginDependency 415 | 24.IBPluginDependency 416 | 27.IBPluginDependency 417 | 28.IBPluginDependency 418 | 29.IBPluginDependency 419 | 3.CustomClassName 420 | 3.IBPluginDependency 421 | 30.IBPluginDependency 422 | 33.IBEditorWindowLastContentRect 423 | 33.IBPluginDependency 424 | 34.IBEditorWindowLastContentRect 425 | 34.IBPluginDependency 426 | 37.IBPluginDependency 427 | 39.IBPluginDependency 428 | 429 | 430 | YES 431 | UIApplication 432 | UIResponder 433 | Switcher 434 | {{234, 376}, {320, 480}} 435 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 436 | {{525, 346}, {320, 480}} 437 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 438 | {{21, 342}, {320, 480}} 439 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 440 | TableVC 441 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 442 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 443 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 444 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 445 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 446 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 447 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 448 | AppDelegate 449 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 450 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 451 | {{0, 534}, {320, 480}} 452 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 453 | {{826, 118}, {320, 480}} 454 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 455 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 456 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 457 | 458 | 459 | 460 | YES 461 | 462 | 463 | YES 464 | 465 | 466 | 467 | 468 | YES 469 | 470 | 471 | YES 472 | 473 | 474 | 475 | 55 476 | 477 | 478 | 479 | YES 480 | 481 | AppDelegate 482 | NSObject 483 | 484 | YES 485 | 486 | YES 487 | nvc 488 | vc1 489 | vc2 490 | viewController 491 | window 492 | 493 | 494 | YES 495 | UINavigationController 496 | UIViewController 497 | UIViewController 498 | CHViewControllerSwitcher 499 | UIWindow 500 | 501 | 502 | 503 | YES 504 | 505 | YES 506 | nvc 507 | vc1 508 | vc2 509 | viewController 510 | window 511 | 512 | 513 | YES 514 | 515 | nvc 516 | UINavigationController 517 | 518 | 519 | vc1 520 | UIViewController 521 | 522 | 523 | vc2 524 | UIViewController 525 | 526 | 527 | viewController 528 | CHViewControllerSwitcher 529 | 530 | 531 | window 532 | UIWindow 533 | 534 | 535 | 536 | 537 | IBProjectSource 538 | Classes/AppDelegate.h 539 | 540 | 541 | 542 | CHViewControllerSwitcher 543 | UIViewController 544 | 545 | layoutView 546 | UIView 547 | 548 | 549 | layoutView 550 | 551 | layoutView 552 | UIView 553 | 554 | 555 | 556 | IBProjectSource 557 | Classes/CHViewControllerSwitcher.h 558 | 559 | 560 | 561 | CHViewControllerSwitcher 562 | UIViewController 563 | 564 | touch_select: 565 | UISegmentedControl 566 | 567 | 568 | touch_select: 569 | 570 | touch_select: 571 | UISegmentedControl 572 | 573 | 574 | 575 | IBUserSource 576 | 577 | 578 | 579 | 580 | Switcher 581 | CHViewControllerSwitcher 582 | 583 | switchViews: 584 | UISegmentedControl 585 | 586 | 587 | switchViews: 588 | 589 | switchViews: 590 | UISegmentedControl 591 | 592 | 593 | 594 | IBProjectSource 595 | Classes/Switcher.h 596 | 597 | 598 | 599 | Switcher 600 | CHViewControllerSwitcher 601 | 602 | IBUserSource 603 | 604 | 605 | 606 | 607 | TableVC 608 | UITableViewController 609 | 610 | IBProjectSource 611 | Classes/TableVC.h 612 | 613 | 614 | 615 | TableVC 616 | UITableViewController 617 | 618 | IBUserSource 619 | 620 | 621 | 622 | 623 | UIWindow 624 | UIView 625 | 626 | IBUserSource 627 | 628 | 629 | 630 | 631 | 632 | YES 633 | 634 | NSObject 635 | 636 | IBFrameworkSource 637 | Foundation.framework/Headers/NSError.h 638 | 639 | 640 | 641 | NSObject 642 | 643 | IBFrameworkSource 644 | Foundation.framework/Headers/NSFileManager.h 645 | 646 | 647 | 648 | NSObject 649 | 650 | IBFrameworkSource 651 | Foundation.framework/Headers/NSKeyValueCoding.h 652 | 653 | 654 | 655 | NSObject 656 | 657 | IBFrameworkSource 658 | Foundation.framework/Headers/NSKeyValueObserving.h 659 | 660 | 661 | 662 | NSObject 663 | 664 | IBFrameworkSource 665 | Foundation.framework/Headers/NSKeyedArchiver.h 666 | 667 | 668 | 669 | NSObject 670 | 671 | IBFrameworkSource 672 | Foundation.framework/Headers/NSObject.h 673 | 674 | 675 | 676 | NSObject 677 | 678 | IBFrameworkSource 679 | Foundation.framework/Headers/NSRunLoop.h 680 | 681 | 682 | 683 | NSObject 684 | 685 | IBFrameworkSource 686 | Foundation.framework/Headers/NSThread.h 687 | 688 | 689 | 690 | NSObject 691 | 692 | IBFrameworkSource 693 | Foundation.framework/Headers/NSURL.h 694 | 695 | 696 | 697 | NSObject 698 | 699 | IBFrameworkSource 700 | Foundation.framework/Headers/NSURLConnection.h 701 | 702 | 703 | 704 | NSObject 705 | 706 | IBFrameworkSource 707 | UIKit.framework/Headers/UIAccessibility.h 708 | 709 | 710 | 711 | NSObject 712 | 713 | IBFrameworkSource 714 | UIKit.framework/Headers/UINibLoading.h 715 | 716 | 717 | 718 | NSObject 719 | 720 | IBFrameworkSource 721 | UIKit.framework/Headers/UIResponder.h 722 | 723 | 724 | 725 | UIApplication 726 | UIResponder 727 | 728 | IBFrameworkSource 729 | UIKit.framework/Headers/UIApplication.h 730 | 731 | 732 | 733 | UIBarButtonItem 734 | UIBarItem 735 | 736 | IBFrameworkSource 737 | UIKit.framework/Headers/UIBarButtonItem.h 738 | 739 | 740 | 741 | UIBarItem 742 | NSObject 743 | 744 | IBFrameworkSource 745 | UIKit.framework/Headers/UIBarItem.h 746 | 747 | 748 | 749 | UIControl 750 | UIView 751 | 752 | IBFrameworkSource 753 | UIKit.framework/Headers/UIControl.h 754 | 755 | 756 | 757 | UINavigationBar 758 | UIView 759 | 760 | IBFrameworkSource 761 | UIKit.framework/Headers/UINavigationBar.h 762 | 763 | 764 | 765 | UINavigationController 766 | UIViewController 767 | 768 | IBFrameworkSource 769 | UIKit.framework/Headers/UINavigationController.h 770 | 771 | 772 | 773 | UINavigationItem 774 | NSObject 775 | 776 | 777 | 778 | UIResponder 779 | NSObject 780 | 781 | 782 | 783 | UIScrollView 784 | UIView 785 | 786 | IBFrameworkSource 787 | UIKit.framework/Headers/UIScrollView.h 788 | 789 | 790 | 791 | UISearchBar 792 | UIView 793 | 794 | IBFrameworkSource 795 | UIKit.framework/Headers/UISearchBar.h 796 | 797 | 798 | 799 | UISearchDisplayController 800 | NSObject 801 | 802 | IBFrameworkSource 803 | UIKit.framework/Headers/UISearchDisplayController.h 804 | 805 | 806 | 807 | UISegmentedControl 808 | UIControl 809 | 810 | IBFrameworkSource 811 | UIKit.framework/Headers/UISegmentedControl.h 812 | 813 | 814 | 815 | UITableView 816 | UIScrollView 817 | 818 | IBFrameworkSource 819 | UIKit.framework/Headers/UITableView.h 820 | 821 | 822 | 823 | UITableViewController 824 | UIViewController 825 | 826 | IBFrameworkSource 827 | UIKit.framework/Headers/UITableViewController.h 828 | 829 | 830 | 831 | UITextView 832 | UIScrollView 833 | 834 | IBFrameworkSource 835 | UIKit.framework/Headers/UITextView.h 836 | 837 | 838 | 839 | UIToolbar 840 | UIView 841 | 842 | IBFrameworkSource 843 | UIKit.framework/Headers/UIToolbar.h 844 | 845 | 846 | 847 | UIView 848 | 849 | IBFrameworkSource 850 | UIKit.framework/Headers/UIPrintFormatter.h 851 | 852 | 853 | 854 | UIView 855 | 856 | IBFrameworkSource 857 | UIKit.framework/Headers/UITextField.h 858 | 859 | 860 | 861 | UIView 862 | UIResponder 863 | 864 | IBFrameworkSource 865 | UIKit.framework/Headers/UIView.h 866 | 867 | 868 | 869 | UIViewController 870 | 871 | 872 | 873 | UIViewController 874 | 875 | IBFrameworkSource 876 | UIKit.framework/Headers/UIPopoverController.h 877 | 878 | 879 | 880 | UIViewController 881 | 882 | IBFrameworkSource 883 | UIKit.framework/Headers/UISplitViewController.h 884 | 885 | 886 | 887 | UIViewController 888 | 889 | IBFrameworkSource 890 | UIKit.framework/Headers/UITabBarController.h 891 | 892 | 893 | 894 | UIViewController 895 | UIResponder 896 | 897 | IBFrameworkSource 898 | UIKit.framework/Headers/UIViewController.h 899 | 900 | 901 | 902 | UIWindow 903 | UIView 904 | 905 | IBFrameworkSource 906 | UIKit.framework/Headers/UIWindow.h 907 | 908 | 909 | 910 | 911 | 0 912 | IBCocoaTouchFramework 913 | 914 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 915 | 916 | 917 | 918 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 919 | 920 | 921 | YES 922 | CHViewControllerSwitcher.xcodeproj 923 | 3 924 | 132 925 | 926 | 927 | -------------------------------------------------------------------------------- /README.markdown: -------------------------------------------------------------------------------- 1 | CHViewControllerSwitcher 2 | ===================== 3 | CHViewControllerSwitcher is a replacement for UITabBarController, with useful features. 4 | 5 | Why I created this 6 | -------------------------- 7 | UITabBarController is a great selection interface. However, some people want: 8 | - a tab bar at the top of the window 9 | - six or seven buttons on the tab bar 10 | - their own tab bar 11 | 12 | Features 13 | ------------- 14 | - Allows you to create your own selection interface with UI-components. 15 | - Allows you to use just some part of the window, not the full-screen mode. 16 | - Allows you to custom frame sizes of the content view for the portrait/landscape modes. 17 | 18 | 19 | 20 | Copyright (c) 2011 cheolhee 21 | 22 | Permission is hereby granted, free of charge, to any person obtaining a copy 23 | of this software and associated documentation files (the "Software"), to deal 24 | in the Software without restriction, including without limitation the rights 25 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 26 | copies of the Software, and to permit persons to whom the Software is furnished 27 | to do so, subject to the following conditions: 28 | 29 | The above copyright notice and this permission notice shall be included in all 30 | copies or substantial portions of the Software. 31 | 32 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 33 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 34 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 35 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 36 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 37 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 38 | THE SOFTWARE. -------------------------------------------------------------------------------- /Resources-iPad/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 10J869 6 | 823 7 | 1038.35 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 132 12 | 13 | 14 | YES 15 | 16 | 17 | YES 18 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 19 | 20 | 21 | YES 22 | 23 | YES 24 | 25 | 26 | YES 27 | 28 | 29 | 30 | YES 31 | 32 | IBFilesOwner 33 | IBIPadFramework 34 | 35 | 36 | IBFirstResponder 37 | IBIPadFramework 38 | 39 | 40 | IBIPadFramework 41 | 42 | 43 | Switcher 44 | 45 | 2 46 | 47 | 48 | 1 49 | 50 | IBIPadFramework 51 | NO 52 | 53 | 54 | 55 | 292 56 | {768, 1004} 57 | 58 | 1 59 | MSAxIDEAA 60 | 61 | NO 62 | NO 63 | 64 | IBIPadFramework 65 | YES 66 | 67 | 68 | 69 | 70 | 1 71 | 72 | IBIPadFramework 73 | NO 74 | 75 | 76 | 256 77 | {0, 0} 78 | NO 79 | YES 80 | YES 81 | IBIPadFramework 82 | 83 | 84 | 85 | 256 86 | {{0, 436}, {320, 44}} 87 | NO 88 | YES 89 | 4 90 | YES 91 | IBIPadFramework 92 | 93 | 94 | YES 95 | 96 | 97 | 98 | 274 99 | {768, 916} 100 | 101 | 3 102 | MQA 103 | 104 | YES 105 | IBIPadFramework 106 | YES 107 | NO 108 | 1 109 | 0 110 | YES 111 | 44 112 | 22 113 | 22 114 | 115 | 116 | YES 117 | 118 | IBIPadFramework 119 | 1 120 | 7 121 | 122 | 123 | IBIPadFramework 124 | 5 125 | 126 | 127 | IBIPadFramework 128 | 1 129 | 9 130 | 131 | 132 | 133 | Navigation 134 | 135 | IBIPadFramework 136 | 1 137 | 138 | 13 139 | 140 | IBIPadFramework 141 | 142 | 143 | 144 | 145 | 1 146 | 147 | IBIPadFramework 148 | NO 149 | 150 | 151 | NO 152 | 153 | 154 | 155 | 156 | 274 157 | {768, 1024} 158 | 159 | 1 160 | MSAwLjQwMDAwMDAwNiAwLjQwMDAwMDAwNgA 161 | 162 | IBIPadFramework 163 | 164 | 165 | 1 166 | 167 | IBIPadFramework 168 | NO 169 | 170 | 171 | 172 | 173 | 274 174 | {768, 1024} 175 | 176 | YES 177 | YES 178 | IBIPadFramework 179 | Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. 180 | 181 | 2 182 | IBCocoaTouchFramework 183 | 184 | 185 | 186 | 1 187 | 188 | IBIPadFramework 189 | NO 190 | 191 | 192 | 193 | 194 | YES 195 | 196 | 197 | delegate 198 | 199 | 200 | 201 | 4 202 | 203 | 204 | 205 | window 206 | 207 | 208 | 209 | 14 210 | 211 | 212 | 213 | delegate 214 | 215 | 216 | 217 | 25 218 | 219 | 220 | 221 | dataSource 222 | 223 | 224 | 225 | 26 226 | 227 | 228 | 229 | nvc 230 | 231 | 232 | 233 | 32 234 | 235 | 236 | 237 | vc1 238 | 239 | 240 | 241 | 35 242 | 243 | 244 | 245 | vc2 246 | 247 | 248 | 249 | 36 250 | 251 | 252 | 253 | viewController 254 | 255 | 256 | 257 | 55 258 | 259 | 260 | 261 | 262 | YES 263 | 264 | 0 265 | 266 | 267 | 268 | 269 | 270 | -1 271 | 272 | 273 | File's Owner 274 | 275 | 276 | 3 277 | 278 | 279 | NETabVC App Delegate 280 | 281 | 282 | -2 283 | 284 | 285 | 286 | 287 | 10 288 | 289 | 290 | 291 | 292 | 12 293 | 294 | 295 | 296 | 297 | 16 298 | 299 | 300 | YES 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 17 309 | 310 | 311 | YES 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 18 322 | 323 | 324 | 325 | 326 | 19 327 | 328 | 329 | YES 330 | 331 | 332 | 333 | 334 | 335 | 20 336 | 337 | 338 | 339 | 340 | 24 341 | 342 | 343 | 344 | 345 | 27 346 | 347 | 348 | 349 | 350 | 28 351 | 352 | 353 | 354 | 355 | 29 356 | 357 | 358 | 359 | 360 | 30 361 | 362 | 363 | 364 | 365 | 33 366 | 367 | 368 | YES 369 | 370 | 371 | 372 | 373 | 374 | 34 375 | 376 | 377 | YES 378 | 379 | 380 | 381 | 382 | 383 | 37 384 | 385 | 386 | 387 | 388 | 39 389 | 390 | 391 | 392 | 393 | 394 | 395 | YES 396 | 397 | YES 398 | -1.CustomClassName 399 | -2.CustomClassName 400 | 10.CustomClassName 401 | 10.IBEditorWindowLastContentRect 402 | 10.IBLastUsedUIStatusBarStylesToTargetRuntimesMap 403 | 10.IBPluginDependency 404 | 12.IBEditorWindowLastContentRect 405 | 12.IBLastUsedUIStatusBarStylesToTargetRuntimesMap 406 | 12.IBPluginDependency 407 | 16.IBEditorWindowLastContentRect 408 | 16.IBLastUsedUIStatusBarStylesToTargetRuntimesMap 409 | 16.IBPluginDependency 410 | 17.CustomClassName 411 | 17.IBPluginDependency 412 | 18.IBPluginDependency 413 | 19.IBPluginDependency 414 | 24.IBPluginDependency 415 | 27.IBPluginDependency 416 | 28.IBPluginDependency 417 | 29.IBPluginDependency 418 | 3.CustomClassName 419 | 3.IBPluginDependency 420 | 30.IBPluginDependency 421 | 33.IBEditorWindowLastContentRect 422 | 33.IBPluginDependency 423 | 34.IBEditorWindowLastContentRect 424 | 34.IBPluginDependency 425 | 37.IBPluginDependency 426 | 39.IBPluginDependency 427 | 428 | 429 | YES 430 | UIApplication 431 | UIResponder 432 | Switcher 433 | {{234, 376}, {320, 480}} 434 | 435 | IBCocoaTouchFramework 436 | 437 | 438 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 439 | {{525, 346}, {320, 480}} 440 | 441 | IBCocoaTouchFramework 442 | 443 | 444 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 445 | {{21, 342}, {320, 480}} 446 | 447 | IBCocoaTouchFramework 448 | 449 | 450 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 451 | TableVC 452 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 453 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 454 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 455 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 456 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 457 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 458 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 459 | AppDelegate 460 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 461 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 462 | {{0, 534}, {320, 480}} 463 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 464 | {{826, 118}, {320, 480}} 465 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 466 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 467 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 468 | 469 | 470 | 471 | YES 472 | 473 | 474 | YES 475 | 476 | 477 | 478 | 479 | YES 480 | 481 | 482 | YES 483 | 484 | 485 | 486 | 55 487 | 488 | 489 | 490 | YES 491 | 492 | AppDelegate 493 | NSObject 494 | 495 | YES 496 | 497 | YES 498 | nvc 499 | vc1 500 | vc2 501 | viewController 502 | window 503 | 504 | 505 | YES 506 | UINavigationController 507 | UIViewController 508 | UIViewController 509 | CHViewControllerSwitcher 510 | UIWindow 511 | 512 | 513 | 514 | YES 515 | 516 | YES 517 | nvc 518 | vc1 519 | vc2 520 | viewController 521 | window 522 | 523 | 524 | YES 525 | 526 | nvc 527 | UINavigationController 528 | 529 | 530 | vc1 531 | UIViewController 532 | 533 | 534 | vc2 535 | UIViewController 536 | 537 | 538 | viewController 539 | CHViewControllerSwitcher 540 | 541 | 542 | window 543 | UIWindow 544 | 545 | 546 | 547 | 548 | IBProjectSource 549 | Classes/AppDelegate.h 550 | 551 | 552 | 553 | CHViewControllerSwitcher 554 | UIViewController 555 | 556 | layoutView 557 | UIView 558 | 559 | 560 | layoutView 561 | 562 | layoutView 563 | UIView 564 | 565 | 566 | 567 | IBProjectSource 568 | Classes/CHViewControllerSwitcher.h 569 | 570 | 571 | 572 | CHViewControllerSwitcher 573 | UIViewController 574 | 575 | touch_select: 576 | UISegmentedControl 577 | 578 | 579 | touch_select: 580 | 581 | touch_select: 582 | UISegmentedControl 583 | 584 | 585 | 586 | IBUserSource 587 | 588 | 589 | 590 | 591 | Switcher 592 | CHViewControllerSwitcher 593 | 594 | switchViews: 595 | UISegmentedControl 596 | 597 | 598 | switchViews: 599 | 600 | switchViews: 601 | UISegmentedControl 602 | 603 | 604 | 605 | IBProjectSource 606 | Classes/Switcher.h 607 | 608 | 609 | 610 | Switcher 611 | CHViewControllerSwitcher 612 | 613 | IBUserSource 614 | 615 | 616 | 617 | 618 | TableVC 619 | UITableViewController 620 | 621 | IBProjectSource 622 | Classes/TableVC.h 623 | 624 | 625 | 626 | TableVC 627 | UITableViewController 628 | 629 | IBUserSource 630 | 631 | 632 | 633 | 634 | UIWindow 635 | UIView 636 | 637 | IBUserSource 638 | 639 | 640 | 641 | 642 | 643 | YES 644 | 645 | NSObject 646 | 647 | IBFrameworkSource 648 | Foundation.framework/Headers/NSError.h 649 | 650 | 651 | 652 | NSObject 653 | 654 | IBFrameworkSource 655 | Foundation.framework/Headers/NSFileManager.h 656 | 657 | 658 | 659 | NSObject 660 | 661 | IBFrameworkSource 662 | Foundation.framework/Headers/NSKeyValueCoding.h 663 | 664 | 665 | 666 | NSObject 667 | 668 | IBFrameworkSource 669 | Foundation.framework/Headers/NSKeyValueObserving.h 670 | 671 | 672 | 673 | NSObject 674 | 675 | IBFrameworkSource 676 | Foundation.framework/Headers/NSKeyedArchiver.h 677 | 678 | 679 | 680 | NSObject 681 | 682 | IBFrameworkSource 683 | Foundation.framework/Headers/NSObject.h 684 | 685 | 686 | 687 | NSObject 688 | 689 | IBFrameworkSource 690 | Foundation.framework/Headers/NSRunLoop.h 691 | 692 | 693 | 694 | NSObject 695 | 696 | IBFrameworkSource 697 | Foundation.framework/Headers/NSThread.h 698 | 699 | 700 | 701 | NSObject 702 | 703 | IBFrameworkSource 704 | Foundation.framework/Headers/NSURL.h 705 | 706 | 707 | 708 | NSObject 709 | 710 | IBFrameworkSource 711 | Foundation.framework/Headers/NSURLConnection.h 712 | 713 | 714 | 715 | NSObject 716 | 717 | IBFrameworkSource 718 | UIKit.framework/Headers/UIAccessibility.h 719 | 720 | 721 | 722 | NSObject 723 | 724 | IBFrameworkSource 725 | UIKit.framework/Headers/UINibLoading.h 726 | 727 | 728 | 729 | NSObject 730 | 731 | IBFrameworkSource 732 | UIKit.framework/Headers/UIResponder.h 733 | 734 | 735 | 736 | UIApplication 737 | UIResponder 738 | 739 | IBFrameworkSource 740 | UIKit.framework/Headers/UIApplication.h 741 | 742 | 743 | 744 | UIBarButtonItem 745 | UIBarItem 746 | 747 | IBFrameworkSource 748 | UIKit.framework/Headers/UIBarButtonItem.h 749 | 750 | 751 | 752 | UIBarItem 753 | NSObject 754 | 755 | IBFrameworkSource 756 | UIKit.framework/Headers/UIBarItem.h 757 | 758 | 759 | 760 | UIControl 761 | UIView 762 | 763 | IBFrameworkSource 764 | UIKit.framework/Headers/UIControl.h 765 | 766 | 767 | 768 | UINavigationBar 769 | UIView 770 | 771 | IBFrameworkSource 772 | UIKit.framework/Headers/UINavigationBar.h 773 | 774 | 775 | 776 | UINavigationController 777 | UIViewController 778 | 779 | IBFrameworkSource 780 | UIKit.framework/Headers/UINavigationController.h 781 | 782 | 783 | 784 | UINavigationItem 785 | NSObject 786 | 787 | 788 | 789 | UIResponder 790 | NSObject 791 | 792 | 793 | 794 | UIScrollView 795 | UIView 796 | 797 | IBFrameworkSource 798 | UIKit.framework/Headers/UIScrollView.h 799 | 800 | 801 | 802 | UISearchBar 803 | UIView 804 | 805 | IBFrameworkSource 806 | UIKit.framework/Headers/UISearchBar.h 807 | 808 | 809 | 810 | UISearchDisplayController 811 | NSObject 812 | 813 | IBFrameworkSource 814 | UIKit.framework/Headers/UISearchDisplayController.h 815 | 816 | 817 | 818 | UISegmentedControl 819 | UIControl 820 | 821 | IBFrameworkSource 822 | UIKit.framework/Headers/UISegmentedControl.h 823 | 824 | 825 | 826 | UITableView 827 | UIScrollView 828 | 829 | IBFrameworkSource 830 | UIKit.framework/Headers/UITableView.h 831 | 832 | 833 | 834 | UITableViewController 835 | UIViewController 836 | 837 | IBFrameworkSource 838 | UIKit.framework/Headers/UITableViewController.h 839 | 840 | 841 | 842 | UITextView 843 | UIScrollView 844 | 845 | IBFrameworkSource 846 | UIKit.framework/Headers/UITextView.h 847 | 848 | 849 | 850 | UIToolbar 851 | UIView 852 | 853 | IBFrameworkSource 854 | UIKit.framework/Headers/UIToolbar.h 855 | 856 | 857 | 858 | UIView 859 | 860 | IBFrameworkSource 861 | UIKit.framework/Headers/UIPrintFormatter.h 862 | 863 | 864 | 865 | UIView 866 | 867 | IBFrameworkSource 868 | UIKit.framework/Headers/UITextField.h 869 | 870 | 871 | 872 | UIView 873 | UIResponder 874 | 875 | IBFrameworkSource 876 | UIKit.framework/Headers/UIView.h 877 | 878 | 879 | 880 | UIViewController 881 | 882 | 883 | 884 | UIViewController 885 | 886 | IBFrameworkSource 887 | UIKit.framework/Headers/UIPopoverController.h 888 | 889 | 890 | 891 | UIViewController 892 | 893 | IBFrameworkSource 894 | UIKit.framework/Headers/UISplitViewController.h 895 | 896 | 897 | 898 | UIViewController 899 | 900 | IBFrameworkSource 901 | UIKit.framework/Headers/UITabBarController.h 902 | 903 | 904 | 905 | UIViewController 906 | UIResponder 907 | 908 | IBFrameworkSource 909 | UIKit.framework/Headers/UIViewController.h 910 | 911 | 912 | 913 | UIWindow 914 | UIView 915 | 916 | IBFrameworkSource 917 | UIKit.framework/Headers/UIWindow.h 918 | 919 | 920 | 921 | 922 | 0 923 | IBIPadFramework 924 | 925 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 926 | 927 | 928 | 929 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 930 | 931 | 932 | YES 933 | CHViewControllerSwitcher.xcodeproj 934 | 3 935 | 132 936 | 937 | 938 | -------------------------------------------------------------------------------- /Resources-iPad/Switcher.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 10J869 6 | 823 7 | 1038.35 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 132 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBIPadFramework 35 | 36 | 37 | IBFirstResponder 38 | IBIPadFramework 39 | 40 | 41 | 42 | 274 43 | 44 | YES 45 | 46 | 47 | 289 48 | {{507, 94}, {228, 173}} 49 | 50 | 51 | 3 52 | MQA 53 | 54 | YES 55 | 0.76760566234588623 56 | NO 57 | IBIPadFramework 58 | NO 59 | useCustomFrameSize=YES to ignore Auto Resizing 60 | 61 | Helvetica 62 | 14 63 | 16 64 | 65 | 66 | 2 67 | IBCocoaTouchFramework 68 | 69 | 70 | 71 | 72 | 290 73 | {{20, 20}, {728, 30}} 74 | 75 | NO 76 | IBIPadFramework 77 | 2 78 | 3 79 | 0 80 | 81 | YES 82 | 1 83 | 2 84 | 3 85 | 86 | 87 | YES 88 | 89 | 90 | 91 | 92 | 93 | YES 94 | 95 | 96 | 97 | 98 | 99 | YES 100 | {0, 0} 101 | {0, 0} 102 | {0, 0} 103 | 104 | 105 | YES 106 | 107 | 108 | 109 | 110 | YES 111 | 112 | 113 | 114 | 274 115 | {{20, 74}, {728, 865}} 116 | 117 | 118 | 1 119 | MC44MDAwMDAwMTE5IDEgMC40MDAwMDAwMDYAA 120 | 121 | IBIPadFramework 122 | 123 | 124 | 125 | 282 126 | {{140, 827}, {598, 147}} 127 | 128 | 129 | YES 130 | 0.76760566234588623 131 | NO 132 | IBIPadFramework 133 | NO 134 | Unlike UITabBarController, You can place views over the content view like this. 135 | 136 | 137 | 2 138 | IBCocoaTouchFramework 139 | 140 | 141 | 142 | {768, 1004} 143 | 144 | 145 | 3 146 | MC42NjY2NjY2NjY3AA 147 | 148 | NO 149 | 150 | 2 151 | 152 | IBIPadFramework 153 | 154 | 155 | 156 | 157 | YES 158 | 159 | 160 | view 161 | 162 | 163 | 164 | 7 165 | 166 | 167 | 168 | layoutView 169 | 170 | 171 | 172 | 14 173 | 174 | 175 | 176 | switchViews: 177 | 178 | 179 | 13 180 | 181 | 20 182 | 183 | 184 | 185 | 186 | YES 187 | 188 | 0 189 | 190 | 191 | 192 | 193 | 194 | -1 195 | 196 | 197 | File's Owner 198 | 199 | 200 | -2 201 | 202 | 203 | 204 | 205 | 6 206 | 207 | 208 | YES 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 9 218 | 219 | 220 | YES 221 | 222 | 223 | 224 | 225 | 15 226 | 227 | 228 | 229 | 230 | 18 231 | 232 | 233 | 234 | 235 | 22 236 | 237 | 238 | 239 | 240 | 241 | 242 | YES 243 | 244 | YES 245 | -1.CustomClassName 246 | -2.CustomClassName 247 | 15.IBPluginDependency 248 | 15.IBViewBoundsToFrameTransform 249 | 18.IBPluginDependency 250 | 18.IBViewBoundsToFrameTransform 251 | 22.IBPluginDependency 252 | 22.IBViewBoundsToFrameTransform 253 | 6.IBEditorWindowLastContentRect 254 | 6.IBLastUsedUIStatusBarStylesToTargetRuntimesMap 255 | 6.IBPluginDependency 256 | 9.IBPluginDependency 257 | 9.IBViewBoundsToFrameTransform 258 | 259 | 260 | YES 261 | Switcher 262 | UIResponder 263 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 264 | 265 | P4AAAL+AAABDdAAAw5wAAA 266 | 267 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 268 | 269 | AUMMAABETsAAA 270 | 271 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 272 | 273 | AUP9gABCvAAAA 274 | 275 | {{80, 33}, {895, 1003}} 276 | 277 | IBCocoaTouchFramework 278 | 279 | 280 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 281 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 282 | 283 | P4AAAL+AAABDdAAAxCeAAA 284 | 285 | 286 | 287 | 288 | YES 289 | 290 | 291 | YES 292 | 293 | 294 | 295 | 296 | YES 297 | 298 | 299 | YES 300 | 301 | 302 | 303 | 22 304 | 305 | 306 | 307 | YES 308 | 309 | CHViewControllerSwitcher 310 | UIViewController 311 | 312 | layoutView 313 | UIView 314 | 315 | 316 | layoutView 317 | 318 | layoutView 319 | UIView 320 | 321 | 322 | 323 | IBProjectSource 324 | Classes/CHViewControllerSwitcher.h 325 | 326 | 327 | 328 | CHViewControllerSwitcher 329 | UIViewController 330 | 331 | IBUserSource 332 | 333 | 334 | 335 | 336 | Switcher 337 | CHViewControllerSwitcher 338 | 339 | switchViews: 340 | UISegmentedControl 341 | 342 | 343 | switchViews: 344 | 345 | switchViews: 346 | UISegmentedControl 347 | 348 | 349 | 350 | IBProjectSource 351 | Classes/Switcher.h 352 | 353 | 354 | 355 | Switcher 356 | CHViewControllerSwitcher 357 | 358 | IBUserSource 359 | 360 | 361 | 362 | 363 | 364 | YES 365 | 366 | NSObject 367 | 368 | IBFrameworkSource 369 | Foundation.framework/Headers/NSError.h 370 | 371 | 372 | 373 | NSObject 374 | 375 | IBFrameworkSource 376 | Foundation.framework/Headers/NSFileManager.h 377 | 378 | 379 | 380 | NSObject 381 | 382 | IBFrameworkSource 383 | Foundation.framework/Headers/NSKeyValueCoding.h 384 | 385 | 386 | 387 | NSObject 388 | 389 | IBFrameworkSource 390 | Foundation.framework/Headers/NSKeyValueObserving.h 391 | 392 | 393 | 394 | NSObject 395 | 396 | IBFrameworkSource 397 | Foundation.framework/Headers/NSKeyedArchiver.h 398 | 399 | 400 | 401 | NSObject 402 | 403 | IBFrameworkSource 404 | Foundation.framework/Headers/NSObject.h 405 | 406 | 407 | 408 | NSObject 409 | 410 | IBFrameworkSource 411 | Foundation.framework/Headers/NSRunLoop.h 412 | 413 | 414 | 415 | NSObject 416 | 417 | IBFrameworkSource 418 | Foundation.framework/Headers/NSThread.h 419 | 420 | 421 | 422 | NSObject 423 | 424 | IBFrameworkSource 425 | Foundation.framework/Headers/NSURL.h 426 | 427 | 428 | 429 | NSObject 430 | 431 | IBFrameworkSource 432 | Foundation.framework/Headers/NSURLConnection.h 433 | 434 | 435 | 436 | NSObject 437 | 438 | IBFrameworkSource 439 | UIKit.framework/Headers/UIAccessibility.h 440 | 441 | 442 | 443 | NSObject 444 | 445 | IBFrameworkSource 446 | UIKit.framework/Headers/UINibLoading.h 447 | 448 | 449 | 450 | NSObject 451 | 452 | IBFrameworkSource 453 | UIKit.framework/Headers/UIResponder.h 454 | 455 | 456 | 457 | UIControl 458 | UIView 459 | 460 | IBFrameworkSource 461 | UIKit.framework/Headers/UIControl.h 462 | 463 | 464 | 465 | UIResponder 466 | NSObject 467 | 468 | 469 | 470 | UIScrollView 471 | UIView 472 | 473 | IBFrameworkSource 474 | UIKit.framework/Headers/UIScrollView.h 475 | 476 | 477 | 478 | UISearchBar 479 | UIView 480 | 481 | IBFrameworkSource 482 | UIKit.framework/Headers/UISearchBar.h 483 | 484 | 485 | 486 | UISearchDisplayController 487 | NSObject 488 | 489 | IBFrameworkSource 490 | UIKit.framework/Headers/UISearchDisplayController.h 491 | 492 | 493 | 494 | UISegmentedControl 495 | UIControl 496 | 497 | IBFrameworkSource 498 | UIKit.framework/Headers/UISegmentedControl.h 499 | 500 | 501 | 502 | UITextView 503 | UIScrollView 504 | 505 | IBFrameworkSource 506 | UIKit.framework/Headers/UITextView.h 507 | 508 | 509 | 510 | UIView 511 | 512 | IBFrameworkSource 513 | UIKit.framework/Headers/UIPrintFormatter.h 514 | 515 | 516 | 517 | UIView 518 | 519 | IBFrameworkSource 520 | UIKit.framework/Headers/UITextField.h 521 | 522 | 523 | 524 | UIView 525 | UIResponder 526 | 527 | IBFrameworkSource 528 | UIKit.framework/Headers/UIView.h 529 | 530 | 531 | 532 | UIViewController 533 | 534 | IBFrameworkSource 535 | UIKit.framework/Headers/UINavigationController.h 536 | 537 | 538 | 539 | UIViewController 540 | 541 | IBFrameworkSource 542 | UIKit.framework/Headers/UIPopoverController.h 543 | 544 | 545 | 546 | UIViewController 547 | 548 | IBFrameworkSource 549 | UIKit.framework/Headers/UISplitViewController.h 550 | 551 | 552 | 553 | UIViewController 554 | 555 | IBFrameworkSource 556 | UIKit.framework/Headers/UITabBarController.h 557 | 558 | 559 | 560 | UIViewController 561 | UIResponder 562 | 563 | IBFrameworkSource 564 | UIKit.framework/Headers/UIViewController.h 565 | 566 | 567 | 568 | 569 | 0 570 | IBIPadFramework 571 | 572 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 573 | 574 | 575 | 576 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 577 | 578 | 579 | YES 580 | ../CHViewControllerSwitcher.xcodeproj 581 | 3 582 | 132 583 | 584 | 585 | -------------------------------------------------------------------------------- /Switcher.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 10J869 6 | 823 7 | 1038.35 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 132 12 | 13 | 14 | YES 15 | 16 | 17 | YES 18 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 19 | 20 | 21 | YES 22 | 23 | YES 24 | 25 | 26 | YES 27 | 28 | 29 | 30 | YES 31 | 32 | IBFilesOwner 33 | IBCocoaTouchFramework 34 | 35 | 36 | IBFirstResponder 37 | IBCocoaTouchFramework 38 | 39 | 40 | 41 | 274 42 | 43 | YES 44 | 45 | 46 | 290 47 | {{20, 12}, {280, 30}} 48 | 49 | NO 50 | IBCocoaTouchFramework 51 | 2 52 | 3 53 | 0 54 | 55 | YES 56 | 1 57 | 2 58 | 3 59 | 60 | 61 | YES 62 | 63 | 64 | 65 | 66 | 67 | YES 68 | 69 | 70 | 71 | 72 | 73 | YES 74 | {0, 0} 75 | {0, 0} 76 | {0, 0} 77 | 78 | 79 | YES 80 | 81 | 82 | 83 | 84 | YES 85 | 86 | 87 | 88 | 274 89 | {{20, 50}, {280, 350}} 90 | 91 | 92 | 1 93 | MC44MDAwMDAwMTE5IDEgMC40MDAwMDAwMDYAA 94 | 95 | IBCocoaTouchFramework 96 | 97 | 98 | 99 | 282 100 | {{44, 364}, {267, 82}} 101 | 102 | 103 | 3 104 | MQA 105 | 106 | YES 107 | 0.76760566234588623 108 | NO 109 | IBCocoaTouchFramework 110 | NO 111 | Unlike UITabBarController, You can place views over the content view like this. 112 | 113 | Helvetica 114 | 14 115 | 16 116 | 117 | 118 | 2 119 | IBCocoaTouchFramework 120 | 121 | 122 | 123 | {320, 460} 124 | 125 | 3 126 | MC42NjY2NjY2NjY3AA 127 | 128 | NO 129 | 130 | IBCocoaTouchFramework 131 | 132 | 133 | 134 | 135 | YES 136 | 137 | 138 | view 139 | 140 | 141 | 142 | 7 143 | 144 | 145 | 146 | layoutView 147 | 148 | 149 | 150 | 14 151 | 152 | 153 | 154 | switchViews: 155 | 156 | 157 | 13 158 | 159 | 20 160 | 161 | 162 | 163 | 164 | YES 165 | 166 | 0 167 | 168 | 169 | 170 | 171 | 172 | -1 173 | 174 | 175 | File's Owner 176 | 177 | 178 | -2 179 | 180 | 181 | 182 | 183 | 6 184 | 185 | 186 | YES 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 9 195 | 196 | 197 | YES 198 | 199 | 200 | 201 | 202 | 15 203 | 204 | 205 | 206 | 207 | 18 208 | 209 | 210 | 211 | 212 | 213 | 214 | YES 215 | 216 | YES 217 | -1.CustomClassName 218 | -2.CustomClassName 219 | 15.IBPluginDependency 220 | 18.IBPluginDependency 221 | 18.IBViewBoundsToFrameTransform 222 | 6.IBEditorWindowLastContentRect 223 | 6.IBPluginDependency 224 | 9.IBPluginDependency 225 | 9.IBViewBoundsToFrameTransform 226 | 227 | 228 | YES 229 | Switcher 230 | UIResponder 231 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 232 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 233 | 234 | P4AAAL+AAADBYAAAw3oAAA 235 | 236 | {{80, 172}, {320, 480}} 237 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 238 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 239 | 240 | P4AAAL+AAABBoAAAw8cAAA 241 | 242 | 243 | 244 | 245 | YES 246 | 247 | 248 | YES 249 | 250 | 251 | 252 | 253 | YES 254 | 255 | 256 | YES 257 | 258 | 259 | 260 | 20 261 | 262 | 263 | 264 | YES 265 | 266 | CHViewControllerSwitcher 267 | UIViewController 268 | 269 | layoutView 270 | UIView 271 | 272 | 273 | layoutView 274 | 275 | layoutView 276 | UIView 277 | 278 | 279 | 280 | IBProjectSource 281 | Classes/CHViewControllerSwitcher.h 282 | 283 | 284 | 285 | CHViewControllerSwitcher 286 | UIViewController 287 | 288 | IBUserSource 289 | 290 | 291 | 292 | 293 | Switcher 294 | CHViewControllerSwitcher 295 | 296 | switchViews: 297 | UISegmentedControl 298 | 299 | 300 | switchViews: 301 | 302 | switchViews: 303 | UISegmentedControl 304 | 305 | 306 | 307 | IBUserSource 308 | 309 | 310 | 311 | 312 | 313 | YES 314 | 315 | NSObject 316 | 317 | IBFrameworkSource 318 | Foundation.framework/Headers/NSError.h 319 | 320 | 321 | 322 | NSObject 323 | 324 | IBFrameworkSource 325 | Foundation.framework/Headers/NSFileManager.h 326 | 327 | 328 | 329 | NSObject 330 | 331 | IBFrameworkSource 332 | Foundation.framework/Headers/NSKeyValueCoding.h 333 | 334 | 335 | 336 | NSObject 337 | 338 | IBFrameworkSource 339 | Foundation.framework/Headers/NSKeyValueObserving.h 340 | 341 | 342 | 343 | NSObject 344 | 345 | IBFrameworkSource 346 | Foundation.framework/Headers/NSKeyedArchiver.h 347 | 348 | 349 | 350 | NSObject 351 | 352 | IBFrameworkSource 353 | Foundation.framework/Headers/NSObject.h 354 | 355 | 356 | 357 | NSObject 358 | 359 | IBFrameworkSource 360 | Foundation.framework/Headers/NSRunLoop.h 361 | 362 | 363 | 364 | NSObject 365 | 366 | IBFrameworkSource 367 | Foundation.framework/Headers/NSThread.h 368 | 369 | 370 | 371 | NSObject 372 | 373 | IBFrameworkSource 374 | Foundation.framework/Headers/NSURL.h 375 | 376 | 377 | 378 | NSObject 379 | 380 | IBFrameworkSource 381 | Foundation.framework/Headers/NSURLConnection.h 382 | 383 | 384 | 385 | NSObject 386 | 387 | IBFrameworkSource 388 | UIKit.framework/Headers/UIAccessibility.h 389 | 390 | 391 | 392 | NSObject 393 | 394 | IBFrameworkSource 395 | UIKit.framework/Headers/UINibLoading.h 396 | 397 | 398 | 399 | NSObject 400 | 401 | IBFrameworkSource 402 | UIKit.framework/Headers/UIResponder.h 403 | 404 | 405 | 406 | UIControl 407 | UIView 408 | 409 | IBFrameworkSource 410 | UIKit.framework/Headers/UIControl.h 411 | 412 | 413 | 414 | UIResponder 415 | NSObject 416 | 417 | 418 | 419 | UIScrollView 420 | UIView 421 | 422 | IBFrameworkSource 423 | UIKit.framework/Headers/UIScrollView.h 424 | 425 | 426 | 427 | UISearchBar 428 | UIView 429 | 430 | IBFrameworkSource 431 | UIKit.framework/Headers/UISearchBar.h 432 | 433 | 434 | 435 | UISearchDisplayController 436 | NSObject 437 | 438 | IBFrameworkSource 439 | UIKit.framework/Headers/UISearchDisplayController.h 440 | 441 | 442 | 443 | UISegmentedControl 444 | UIControl 445 | 446 | IBFrameworkSource 447 | UIKit.framework/Headers/UISegmentedControl.h 448 | 449 | 450 | 451 | UITextView 452 | UIScrollView 453 | 454 | IBFrameworkSource 455 | UIKit.framework/Headers/UITextView.h 456 | 457 | 458 | 459 | UIView 460 | 461 | IBFrameworkSource 462 | UIKit.framework/Headers/UIPrintFormatter.h 463 | 464 | 465 | 466 | UIView 467 | 468 | IBFrameworkSource 469 | UIKit.framework/Headers/UITextField.h 470 | 471 | 472 | 473 | UIView 474 | UIResponder 475 | 476 | IBFrameworkSource 477 | UIKit.framework/Headers/UIView.h 478 | 479 | 480 | 481 | UIViewController 482 | 483 | IBFrameworkSource 484 | UIKit.framework/Headers/UINavigationController.h 485 | 486 | 487 | 488 | UIViewController 489 | 490 | IBFrameworkSource 491 | UIKit.framework/Headers/UIPopoverController.h 492 | 493 | 494 | 495 | UIViewController 496 | 497 | IBFrameworkSource 498 | UIKit.framework/Headers/UISplitViewController.h 499 | 500 | 501 | 502 | UIViewController 503 | 504 | IBFrameworkSource 505 | UIKit.framework/Headers/UITabBarController.h 506 | 507 | 508 | 509 | UIViewController 510 | UIResponder 511 | 512 | IBFrameworkSource 513 | UIKit.framework/Headers/UIViewController.h 514 | 515 | 516 | 517 | 518 | 0 519 | IBCocoaTouchFramework 520 | 521 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 522 | 523 | 524 | 525 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 526 | 527 | 528 | YES 529 | NETabVC.xcodeproj 530 | 3 531 | 132 532 | 533 | 534 | -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CHViewControllerSwitcher 4 | // 5 | 6 | // Copyright 2011 cheolhee. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) { 12 | // instrumentObjcMessageSends(YES); 13 | 14 | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 15 | int retVal = UIApplicationMain(argc, argv, nil, nil); 16 | [pool release]; 17 | return retVal; 18 | } 19 | --------------------------------------------------------------------------------