Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added Example for Expanding/Collapsing TableView Sections

  • Loading branch information...
commit e09682a06de7645946789c4930ce6ea760c2cf9f 1 parent c3de2c8
@Cocoanetics authored
View
BIN  ...codeproj/project.xcworkspace/xcuserdata/oliver.xcuserdatad/UserInterfaceState.xcuserstate
Binary file not shown
View
469 ExpandableTableCells/ExpandableTableCells.xcodeproj/project.pbxproj
@@ -0,0 +1,469 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ A78093E116EF178A000B8EDA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A78093E016EF178A000B8EDA /* UIKit.framework */; };
+ A78093E316EF178A000B8EDA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A78093E216EF178A000B8EDA /* Foundation.framework */; };
+ A78093E516EF178A000B8EDA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A78093E416EF178A000B8EDA /* CoreGraphics.framework */; };
+ A78093EB16EF178A000B8EDA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = A78093E916EF178A000B8EDA /* InfoPlist.strings */; };
+ A78093ED16EF178A000B8EDA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A78093EC16EF178A000B8EDA /* main.m */; };
+ A78093F116EF178A000B8EDA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A78093F016EF178A000B8EDA /* AppDelegate.m */; };
+ A78093F316EF178A000B8EDA /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = A78093F216EF178A000B8EDA /* Default.png */; };
+ A78093F516EF178A000B8EDA /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A78093F416EF178A000B8EDA /* Default@2x.png */; };
+ A78093F716EF178A000B8EDA /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A78093F616EF178A000B8EDA /* Default-568h@2x.png */; };
+ A780940516EF17BD000B8EDA /* UITableViewControllerWithExpandoSection.m in Sources */ = {isa = PBXBuildFile; fileRef = A780940416EF17BD000B8EDA /* UITableViewControllerWithExpandoSection.m */; };
+ A780942616EF18CE000B8EDA /* libDTFoundation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A780941716EF1847000B8EDA /* libDTFoundation.a */; };
+ A780942816EF18DA000B8EDA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A780942716EF18DA000B8EDA /* QuartzCore.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ A780941416EF1847000B8EDA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = A7BAD10E1483F934000E2B6A;
+ remoteInfo = "Static Framework";
+ };
+ A780941616EF1847000B8EDA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = A70B4CE71486637E00873A4A;
+ remoteInfo = "Static Library";
+ };
+ A780941816EF1847000B8EDA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = A7D60FCF15D3B0BC00AEDD1B;
+ remoteInfo = "Unit Tests";
+ };
+ A780941A16EF1847000B8EDA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = A710A5001607556000437D36;
+ remoteInfo = "Static Library (Mac)";
+ };
+ A780941C16EF1847000B8EDA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = A7E383C2160DFEDB00CF72D6;
+ remoteInfo = DTHTMLParser;
+ };
+ A780941E16EF1847000B8EDA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 3D7CE547166613B60028D339;
+ remoteInfo = "DTHTMLParser (Mac)";
+ };
+ A780942016EF1847000B8EDA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = A7E383DA160DFF8600CF72D6;
+ remoteInfo = DTZipArchive;
+ };
+ A780942216EF1847000B8EDA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = A78220BA168060CA005B602D;
+ remoteInfo = "DTUTI (iOS)";
+ };
+ A780942416EF1847000B8EDA /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = A7E889A416A9B190009EF0DF;
+ remoteInfo = "DTUTI (Mac)";
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ A78093DD16EF178A000B8EDA /* ExpandableTableCells.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ExpandableTableCells.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ A78093E016EF178A000B8EDA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ A78093E216EF178A000B8EDA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ A78093E416EF178A000B8EDA /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ A78093E816EF178A000B8EDA /* ExpandableTableCells-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ExpandableTableCells-Info.plist"; sourceTree = "<group>"; };
+ A78093EA16EF178A000B8EDA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ A78093EC16EF178A000B8EDA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ A78093EE16EF178A000B8EDA /* ExpandableTableCells-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ExpandableTableCells-Prefix.pch"; sourceTree = "<group>"; };
+ A78093EF16EF178A000B8EDA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+ A78093F016EF178A000B8EDA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+ A78093F216EF178A000B8EDA /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
+ A78093F416EF178A000B8EDA /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = "<group>"; };
+ A78093F616EF178A000B8EDA /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
+ A780940316EF17BD000B8EDA /* UITableViewControllerWithExpandoSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UITableViewControllerWithExpandoSection.h; sourceTree = "<group>"; };
+ A780940416EF17BD000B8EDA /* UITableViewControllerWithExpandoSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UITableViewControllerWithExpandoSection.m; sourceTree = "<group>"; };
+ A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DTFoundation.xcodeproj; path = ../Externals/DTFoundation/DTFoundation.xcodeproj; sourceTree = "<group>"; };
+ A780942716EF18DA000B8EDA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ A78093DA16EF178A000B8EDA /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A780942816EF18DA000B8EDA /* QuartzCore.framework in Frameworks */,
+ A780942616EF18CE000B8EDA /* libDTFoundation.a in Frameworks */,
+ A78093E116EF178A000B8EDA /* UIKit.framework in Frameworks */,
+ A78093E316EF178A000B8EDA /* Foundation.framework in Frameworks */,
+ A78093E516EF178A000B8EDA /* CoreGraphics.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ A78093D416EF178A000B8EDA = {
+ isa = PBXGroup;
+ children = (
+ A780942716EF18DA000B8EDA /* QuartzCore.framework */,
+ A780940616EF1832000B8EDA /* Externals */,
+ A78093E616EF178A000B8EDA /* ExpandableTableCells */,
+ A78093DF16EF178A000B8EDA /* Frameworks */,
+ A78093DE16EF178A000B8EDA /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ A78093DE16EF178A000B8EDA /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ A78093DD16EF178A000B8EDA /* ExpandableTableCells.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ A78093DF16EF178A000B8EDA /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ A78093E016EF178A000B8EDA /* UIKit.framework */,
+ A78093E216EF178A000B8EDA /* Foundation.framework */,
+ A78093E416EF178A000B8EDA /* CoreGraphics.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+ A78093E616EF178A000B8EDA /* ExpandableTableCells */ = {
+ isa = PBXGroup;
+ children = (
+ A78093EF16EF178A000B8EDA /* AppDelegate.h */,
+ A78093F016EF178A000B8EDA /* AppDelegate.m */,
+ A78093E716EF178A000B8EDA /* Supporting Files */,
+ A780940316EF17BD000B8EDA /* UITableViewControllerWithExpandoSection.h */,
+ A780940416EF17BD000B8EDA /* UITableViewControllerWithExpandoSection.m */,
+ );
+ path = ExpandableTableCells;
+ sourceTree = "<group>";
+ };
+ A78093E716EF178A000B8EDA /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ A78093E816EF178A000B8EDA /* ExpandableTableCells-Info.plist */,
+ A78093E916EF178A000B8EDA /* InfoPlist.strings */,
+ A78093EC16EF178A000B8EDA /* main.m */,
+ A78093EE16EF178A000B8EDA /* ExpandableTableCells-Prefix.pch */,
+ A78093F216EF178A000B8EDA /* Default.png */,
+ A78093F416EF178A000B8EDA /* Default@2x.png */,
+ A78093F616EF178A000B8EDA /* Default-568h@2x.png */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ A780940616EF1832000B8EDA /* Externals */ = {
+ isa = PBXGroup;
+ children = (
+ A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */,
+ );
+ name = Externals;
+ sourceTree = "<group>";
+ };
+ A780940816EF1846000B8EDA /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ A780941516EF1847000B8EDA /* DTFoundation.framework */,
+ A780941716EF1847000B8EDA /* libDTFoundation.a */,
+ A780941916EF1847000B8EDA /* UnitTests.octest */,
+ A780941B16EF1847000B8EDA /* libDTFoundation_Mac.a */,
+ A780941D16EF1847000B8EDA /* libDTHTMLParser.a */,
+ A780941F16EF1847000B8EDA /* libDTHTMLParser.a */,
+ A780942116EF1847000B8EDA /* libDTZipArchive.a */,
+ A780942316EF1847000B8EDA /* libDTUTI.a */,
+ A780942516EF1847000B8EDA /* libDTUTI.a */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ A78093DC16EF178A000B8EDA /* ExpandableTableCells */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = A780940016EF178B000B8EDA /* Build configuration list for PBXNativeTarget "ExpandableTableCells" */;
+ buildPhases = (
+ A78093D916EF178A000B8EDA /* Sources */,
+ A78093DA16EF178A000B8EDA /* Frameworks */,
+ A78093DB16EF178A000B8EDA /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = ExpandableTableCells;
+ productName = ExpandableTableCells;
+ productReference = A78093DD16EF178A000B8EDA /* ExpandableTableCells.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ A78093D516EF178A000B8EDA /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 0460;
+ ORGANIZATIONNAME = "Drobnik KG";
+ };
+ buildConfigurationList = A78093D816EF178A000B8EDA /* Build configuration list for PBXProject "ExpandableTableCells" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = A78093D416EF178A000B8EDA;
+ productRefGroup = A78093DE16EF178A000B8EDA /* Products */;
+ projectDirPath = "";
+ projectReferences = (
+ {
+ ProductGroup = A780940816EF1846000B8EDA /* Products */;
+ ProjectRef = A780940716EF1846000B8EDA /* DTFoundation.xcodeproj */;
+ },
+ );
+ projectRoot = "";
+ targets = (
+ A78093DC16EF178A000B8EDA /* ExpandableTableCells */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+ A780941516EF1847000B8EDA /* DTFoundation.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = DTFoundation.framework;
+ remoteRef = A780941416EF1847000B8EDA /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ A780941716EF1847000B8EDA /* libDTFoundation.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libDTFoundation.a;
+ remoteRef = A780941616EF1847000B8EDA /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ A780941916EF1847000B8EDA /* UnitTests.octest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = UnitTests.octest;
+ remoteRef = A780941816EF1847000B8EDA /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ A780941B16EF1847000B8EDA /* libDTFoundation_Mac.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libDTFoundation_Mac.a;
+ remoteRef = A780941A16EF1847000B8EDA /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ A780941D16EF1847000B8EDA /* libDTHTMLParser.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libDTHTMLParser.a;
+ remoteRef = A780941C16EF1847000B8EDA /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ A780941F16EF1847000B8EDA /* libDTHTMLParser.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libDTHTMLParser.a;
+ remoteRef = A780941E16EF1847000B8EDA /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ A780942116EF1847000B8EDA /* libDTZipArchive.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libDTZipArchive.a;
+ remoteRef = A780942016EF1847000B8EDA /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ A780942316EF1847000B8EDA /* libDTUTI.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libDTUTI.a;
+ remoteRef = A780942216EF1847000B8EDA /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ A780942516EF1847000B8EDA /* libDTUTI.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libDTUTI.a;
+ remoteRef = A780942416EF1847000B8EDA /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+ A78093DB16EF178A000B8EDA /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A78093EB16EF178A000B8EDA /* InfoPlist.strings in Resources */,
+ A78093F316EF178A000B8EDA /* Default.png in Resources */,
+ A78093F516EF178A000B8EDA /* Default@2x.png in Resources */,
+ A78093F716EF178A000B8EDA /* Default-568h@2x.png in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ A78093D916EF178A000B8EDA /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A78093ED16EF178A000B8EDA /* main.m in Sources */,
+ A78093F116EF178A000B8EDA /* AppDelegate.m in Sources */,
+ A780940516EF17BD000B8EDA /* UITableViewControllerWithExpandoSection.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ A78093E916EF178A000B8EDA /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ A78093EA16EF178A000B8EDA /* en */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ A78093FE16EF178B000B8EDA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 6.1;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ };
+ name = Debug;
+ };
+ A78093FF16EF178B000B8EDA /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 6.1;
+ OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ A780940116EF178B000B8EDA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "ExpandableTableCells/ExpandableTableCells-Prefix.pch";
+ INFOPLIST_FILE = "ExpandableTableCells/ExpandableTableCells-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+ OTHER_LDFLAGS = "-ObjC";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ USER_HEADER_SEARCH_PATHS = "../Externals/DTFoundation/**";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Debug;
+ };
+ A780940216EF178B000B8EDA /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "ExpandableTableCells/ExpandableTableCells-Prefix.pch";
+ INFOPLIST_FILE = "ExpandableTableCells/ExpandableTableCells-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+ OTHER_LDFLAGS = "-ObjC";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ USER_HEADER_SEARCH_PATHS = "../Externals/DTFoundation/**";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ A78093D816EF178A000B8EDA /* Build configuration list for PBXProject "ExpandableTableCells" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A78093FE16EF178B000B8EDA /* Debug */,
+ A78093FF16EF178B000B8EDA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ A780940016EF178B000B8EDA /* Build configuration list for PBXNativeTarget "ExpandableTableCells" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A780940116EF178B000B8EDA /* Debug */,
+ A780940216EF178B000B8EDA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = A78093D516EF178A000B8EDA /* Project object */;
+}
View
19 ExpandableTableCells/ExpandableTableCells/AppDelegate.h
@@ -0,0 +1,19 @@
+//
+// AppDelegate.h
+// ExpandableTableCells
+//
+// Created by Oliver Drobnik on 12.03.13.
+// Copyright (c) 2013 Drobnik KG. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@class UITableViewControllerWithExpandoSection;
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@property (strong, nonatomic) UITableViewControllerWithExpandoSection *viewController;
+
+@end
View
52 ExpandableTableCells/ExpandableTableCells/AppDelegate.m
@@ -0,0 +1,52 @@
+//
+// AppDelegate.m
+// ExpandableTableCells
+//
+// Created by Oliver Drobnik on 12.03.13.
+// Copyright (c) 2013 Drobnik KG. All rights reserved.
+//
+
+#import "AppDelegate.h"
+
+#import "UITableViewControllerWithExpandoSection.h"
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+ // Override point for customization after application launch.
+ self.viewController = [[UITableViewControllerWithExpandoSection alloc] initWithStyle:UITableViewStyleGrouped];
+ self.window.rootViewController = self.viewController;
+ [self.window makeKeyAndVisible];
+ return YES;
+}
+
+- (void)applicationWillResignActive:(UIApplication *)application
+{
+ // 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.
+ // 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.
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application
+{
+ // 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.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application
+{
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application
+{
+ // 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.
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application
+{
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+@end
View
BIN  ExpandableTableCells/ExpandableTableCells/Default-568h@2x.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  ExpandableTableCells/ExpandableTableCells/Default.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  ExpandableTableCells/ExpandableTableCells/Default@2x.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
38 ExpandableTableCells/ExpandableTableCells/ExpandableTableCells-Info.plist
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleDisplayName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIdentifier</key>
+ <string>drobnik.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>UIRequiredDeviceCapabilities</key>
+ <array>
+ <string>armv7</string>
+ </array>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+</dict>
+</plist>
View
14 ExpandableTableCells/ExpandableTableCells/ExpandableTableCells-Prefix.pch
@@ -0,0 +1,14 @@
+//
+// Prefix header for all source files of the 'ExpandableTableCells' target in the 'ExpandableTableCells' project
+//
+
+#import <Availability.h>
+
+#ifndef __IPHONE_4_0
+#warning "This project uses features only available in iOS SDK 4.0 and later."
+#endif
+
+#ifdef __OBJC__
+ #import <UIKit/UIKit.h>
+ #import <Foundation/Foundation.h>
+#endif
View
16 ExpandableTableCells/ExpandableTableCells/UITableViewControllerWithExpandoSection.h
@@ -0,0 +1,16 @@
+//
+// UITableViewControllerWithExpandoSection.h
+// ExpandableTableCells
+//
+// Created by Oliver Drobnik on 12.03.13.
+// Copyright (c) 2013 Drobnik KG. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface UITableViewControllerWithExpandoSection : UITableViewController
+{
+ NSMutableIndexSet *expandedSections;
+}
+
+@end
View
220 ExpandableTableCells/ExpandableTableCells/UITableViewControllerWithExpandoSection.m
@@ -0,0 +1,220 @@
+//
+// UITableViewControllerWithExpandoSection.m
+// ExpandableTableCells
+//
+// Created by Oliver Drobnik on 12.03.13.
+// Copyright (c) 2013 Drobnik KG. All rights reserved.
+//
+
+#import "UITableViewControllerWithExpandoSection.h"
+#import "DTCustomColoredAccessory.h"
+
+@interface UITableViewControllerWithExpandoSection ()
+
+@end
+
+@implementation UITableViewControllerWithExpandoSection
+
+- (id)initWithStyle:(UITableViewStyle)style
+{
+ self = [super initWithStyle:style];
+ if (self) {
+ // Custom initialization
+ }
+ return self;
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+
+ if (!expandedSections)
+ {
+ expandedSections = [[NSMutableIndexSet alloc] init];
+ }
+}
+
+- (void)didReceiveMemoryWarning
+{
+ [super didReceiveMemoryWarning];
+ // Dispose of any resources that can be recreated.
+}
+
+#pragma mark - Expanding
+
+- (BOOL)tableView:(UITableView *)tableView canCollapseSection:(NSInteger)section
+{
+ if (section>0) return YES;
+
+ return NO;
+}
+
+
+#pragma mark - Table view data source
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+ return 3;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ if ([self tableView:tableView canCollapseSection:section])
+ {
+ if ([expandedSections containsIndex:section])
+ {
+ return 5; // return rows when expanded
+ }
+
+ return 1; // only top row showing
+ }
+
+ // Return the number of rows in the section.
+ return 1;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ static NSString *CellIdentifier = @"Cell";
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil) {
+ cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
+ }
+
+ // Configure the cell...
+
+ if ([self tableView:tableView canCollapseSection:indexPath.section])
+ {
+ if (!indexPath.row)
+ {
+ // first row
+ cell.textLabel.text = @"Expandable"; // only top row showing
+
+ if ([expandedSections containsIndex:indexPath.section])
+ {
+ cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeUp];
+ }
+ else
+ {
+ cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeDown];
+ }
+ }
+ else
+ {
+ // all other rows
+ cell.textLabel.text = @"Some Detail";
+ cell.accessoryView = nil;
+ cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
+ }
+ }
+ else
+ {
+ cell.accessoryView = nil;
+ cell.textLabel.text = @"Normal Cell";
+
+ }
+
+ return cell;
+}
+
+/*
+// Override to support conditional editing of the table view.
+- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ // Return NO if you do not want the specified item to be editable.
+ return YES;
+}
+*/
+
+/*
+// Override to support editing the table view.
+- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ if (editingStyle == UITableViewCellEditingStyleDelete) {
+ // Delete the row from the data source
+ [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
+ }
+ else if (editingStyle == UITableViewCellEditingStyleInsert) {
+ // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
+ }
+}
+*/
+
+/*
+// Override to support rearranging the table view.
+- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
+{
+}
+*/
+
+/*
+// Override to support conditional rearranging of the table view.
+- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ // Return NO if you do not want the item to be re-orderable.
+ return YES;
+}
+*/
+
+#pragma mark - Table view delegate
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ if ([self tableView:tableView canCollapseSection:indexPath.section])
+ {
+ if (!indexPath.row)
+ {
+ [self.tableView beginUpdates];
+
+ // only first row toggles exapand/collapse
+ [tableView deselectRowAtIndexPath:indexPath animated:YES];
+
+ NSInteger section = indexPath.section;
+ BOOL currentlyExpanded = [expandedSections containsIndex:section];
+ NSInteger rows;
+
+ NSMutableArray *tmpArray = [NSMutableArray array];
+
+ if (currentlyExpanded)
+ {
+ rows = [self tableView:tableView numberOfRowsInSection:section];
+ [expandedSections removeIndex:section];
+
+ }
+ else
+ {
+ [expandedSections addIndex:section];
+ rows = [self tableView:tableView numberOfRowsInSection:section];
+ }
+
+ for (int i=1; i<rows; i++)
+ {
+ NSIndexPath *tmpIndexPath = [NSIndexPath indexPathForRow:i inSection:section];
+ [tmpArray addObject:tmpIndexPath];
+ }
+
+ UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
+
+ if (currentlyExpanded)
+ {
+ [tableView deleteRowsAtIndexPaths:tmpArray
+ withRowAnimation:UITableViewRowAnimationTop];
+
+ cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeDown];
+
+ }
+ else
+ {
+ [tableView insertRowsAtIndexPaths:tmpArray
+ withRowAnimation:UITableViewRowAnimationTop];
+ cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeUp];
+
+ }
+
+ [self.tableView endUpdates];
+ }
+ }
+}
+
+@end
View
2  ExpandableTableCells/ExpandableTableCells/en.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
View
18 ExpandableTableCells/ExpandableTableCells/main.m
@@ -0,0 +1,18 @@
+//
+// main.m
+// ExpandableTableCells
+//
+// Created by Oliver Drobnik on 12.03.13.
+// Copyright (c) 2013 Drobnik KG. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "AppDelegate.h"
+
+int main(int argc, char *argv[])
+{
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+ }
+}
View
1  Readme.markdown
@@ -17,6 +17,7 @@ Contents:
- [Cubed CoreAnimation Conundrum](http://bitly.com/NqcE6n)
- [Containing ViewControllers](http://j.mp/HFu8K5)
+- [Expandable TableView Sections](http://bit.ly/gSbpZp)
- [Let's Bounce](http://j.mp/JyAfw1)
- [OS X Tutorial for iOS Developers](http://bit.ly/NBVOSY)
- [Bonjour Chat](http://bit.ly/SMO5Re)
Please sign in to comment.
Something went wrong with that request. Please try again.