├── .gitignore
├── 00.Overview
└── Overview.md
├── 01.Concepts
├── Concepts.md
├── Support Files
│ ├── ConceptScreenshot1
│ │ ├── ConceptScreenshot1.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── ConceptScreenshot1
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ ├── ConceptScreenshot2
│ │ ├── ConceptScreenshot2.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── ConceptScreenshot2
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ └── Screenshots.key
└── images
│ ├── concepts_indexpath.png
│ ├── concepts_table_styles.png
│ └── concepts_terms.png
├── 02.SetupWithCode
├── Sample Code
│ ├── SetupWithObjcCode
│ │ ├── SetupWithObjcCode.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── SetupWithObjcCode
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── SetupWithSwiftCode
│ │ ├── SetupWithSwiftCode.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── SetupWithSwiftCode
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── SetupWithCode.md
├── Support Files
│ └── Screenshots.key
└── images
│ ├── setup_finished.png
│ ├── setup_first_run.png
│ └── setup_jump_bar.png
├── 03.SetupWithStoryboards
├── Sample Code
│ ├── SetupWithObjcStoryboards
│ │ ├── SetupWithObjcStoryboards.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── SetupWithObjcStoryboards
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── SetupWithSwiftStoryboards
│ │ ├── SetupWithSwiftStoryboards.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── SetupWithSwiftStoryboards
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── SetupWithStoryboards.md
├── Support Files
│ └── Screenshots.key
└── images
│ ├── storyboard_connections_panel.png
│ ├── storyboards_assistant_editor.png
│ ├── storyboards_connect_outlet.png
│ ├── storyboards_connections_complete.png
│ ├── storyboards_constraints.png
│ ├── storyboards_drag_connect_delegate.png
│ ├── storyboards_drag_connect_outlet.png
│ ├── storyboards_drag_table.png
│ ├── storyboards_initial.png
│ ├── storyboards_primary_editor.png
│ └── storyboards_table_style.png
├── 04.SetupWithInterfaceBuilder
├── Sample Code
│ ├── SetupWithObjcIB
│ │ ├── SetupWithObjcIB.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── SetupWithObjcIB
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── CustomViewController.h
│ │ │ ├── CustomViewController.m
│ │ │ ├── CustomViewController.xib
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── SetupWithSwiftIB
│ │ ├── SetupWithSwiftIB.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── SetupWithSwiftIB
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── CustomViewController.swift
│ │ ├── CustomViewController.xib
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── SetupWithInterfaceBuilder.md
├── Support Files
│ └── Screenshots.key
└── images
│ ├── ib_button_action.png
│ ├── ib_connect_delegate.png
│ ├── ib_new_file.png
│ └── ib_new_file_2.png
├── 05.UITableViewController
├── Sample Code
│ ├── TVCObjc
│ │ ├── TVCObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── TVCObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── CustomTableViewController.h
│ │ │ ├── CustomTableViewController.m
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── TVCSwift
│ │ ├── TVCSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── TVCSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── CustomTableViewController.swift
│ │ ├── Info.plist
│ │ └── ViewController.swift
└── UITableViewController.md
├── 06.UITableViewCell
├── Sample Code
│ ├── CellStylesObjc
│ │ ├── CellStylesObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── CellStylesObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ ├── CellStylesSwift
│ │ ├── CellStylesSwift.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── CellStylesSwift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ ├── image.png
│ ├── image@2x.png
│ └── image@3x.png
├── Support Files
│ └── Screenshots.key
├── UITableViewCell.md
└── images
│ ├── cell_accessories.png
│ ├── cell_accessory_view.png
│ ├── cell_imageview.png
│ ├── cell_styles.png
│ └── cell_styles_2.png
├── 07.CellReuse
├── CellReuse.md
├── Sample Code
│ ├── CellReuseObjc
│ │ ├── CellReuseObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── CellReuseObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── CellReuseSwift
│ │ ├── CellReuseSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── CellReuseSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── Support Files
│ └── Screenshots.key
└── images
│ └── cell_reuse_checkmarks.png
├── 08.BasicDataStructure
├── BasicDataStructure.md
└── Sample Code
│ ├── BasicDataStructureObjc
│ ├── BasicDataStructureObjc.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ └── BasicDataStructureObjc
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ └── main.m
│ └── BasicDataStructureSwift
│ ├── BasicDataStructureSwift.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── BasicDataStructureSwift
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── ViewController.swift
├── 09.HandlingRowTaps
├── HandlingRowTaps.md
└── Sample Code
│ ├── HandlingRowTapsObjc
│ ├── HandlingRowTapsObjc.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ └── HandlingRowTapsObjc
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ └── main.m
│ └── HandlingRowTapsSwift
│ ├── HandlingRowTapsSwift.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── HandlingRowTapsSwift
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── ViewController.swift
├── 10.DeletingRows
├── DeletingRows.md
├── Sample Code
│ ├── DeletingRowsObjc
│ │ ├── DeletingRowsObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── DeletingRowsObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── DeletingRowsSwift
│ │ ├── DeletingRowsSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── DeletingRowsSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── Support Files
│ └── Screenshots.key
└── images
│ └── deleting_swiped.png
├── 11.EditingMode
├── EditingMode.md
├── Sample Code
│ ├── EditingModeObjc
│ │ ├── EditingModeObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── EditingModeObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── EditingModeSwift
│ │ ├── EditingModeSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── EditingModeSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── Support Files
│ └── Screenshots.key
└── images
│ ├── editing_accessories.png
│ ├── editing_editbuttonitem.png
│ ├── editing_editingmodeon.png
│ ├── editing_setup.png
│ └── editing_styles.png
├── 12.AddingRows
├── AddingRows.md
├── Sample Code
│ ├── AddingRowsObjc
│ │ ├── AddingRowsObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── AddingRowsObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── AddingRowsSwift
│ │ ├── AddingRowsSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── AddingRowsSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── Support Files
│ └── Screenshots.key
└── images
│ └── adding_setup.png
├── 13.ReorderingRows
├── ReorderingRows.md
├── Sample Code
│ ├── ReorderingRowsObjc
│ │ ├── ReorderingRowsObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── ReorderingRowsObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── ReorderingRowsSwift
│ │ ├── ReorderingRowsSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── ReorderingRowsSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── Support Files
│ └── Screenshots.key
└── images
│ ├── reordering_no_source_drag.png
│ ├── reordering_no_target_drag.png
│ └── reordering_setup.png
├── 14.MultipleRowSelection
├── MultipleRowSelection.md
├── Sample Code
│ ├── MultipleCheckmarksObjc
│ │ ├── MultipleCheckmarksObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── MultipleCheckmarksObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ ├── MultipleCheckmarksSwift
│ │ ├── MultipleCheckmarksSwift.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── MultipleCheckmarksSwift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ ├── MultipleDeleteObjc
│ │ ├── MultipleDeleteObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── MultipleDeleteObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── MultipleDeleteSwift
│ │ ├── MultipleDeleteSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── MultipleDeleteSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── Support Files
│ └── Screenshots.key
└── images
│ ├── multiple_selection_checkmarks.png
│ ├── multiple_selection_deleting_setup.png
│ ├── multiple_selection_edit_mode.png
│ └── multiple_selection_ib_settings.png
├── 15.SectionHeadersFooters
├── Sample Code
│ ├── SectionHeadersObjc
│ │ ├── SectionHeadersObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── SectionHeadersObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── SectionHeadersSwift
│ │ ├── SectionHeadersSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── SectionHeadersSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── SectionHeadersFooters.md
├── Support Files
│ └── Screenshots.key
└── images
│ ├── headers_custom_1.png
│ ├── headers_custom_2.png
│ ├── headers_footers_full.png
│ └── headers_standard_full.png
├── 16.SectionsBasicDataStructure
├── Sample Code
│ ├── SectionsStructureObjc
│ │ ├── SectionsStructureObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── SectionsStructureObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── SectionsStructureSwift
│ │ ├── SectionsStructureSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── SectionsStructureSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
└── SectionsBasicDataStructure.md
├── 17.SectionsAnotherBasicDataStructure
├── Sample Code
│ ├── AnotherSectionsStructureObjc
│ │ ├── AnotherSectionsStructureObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── AnotherSectionsStructureObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── AnotherSectionsStructureSwift
│ │ ├── AnotherSectionsStructureSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── AnotherSectionsStructureSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
└── SectionsAnotherBasicDataStructure.md
├── 18.SectionsCustomModelObjects
├── Sample Code
│ ├── SectionsCustomModelObjc
│ │ ├── SectionsCustomModelObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── SectionsCustomModelObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── Models.h
│ │ │ ├── Models.m
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── SectionsCustomModelSwift
│ │ ├── SectionsCustomModelSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── SectionsCustomModelSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── Models.swift
│ │ └── ViewController.swift
├── SectionsCustomModelObjects.md
├── Support Files
│ └── Screenshots.key
└── images
│ ├── sections_footer.png
│ └── sections_table_colors.png
├── 19.SectionsDataProcessing
├── Sample Code
│ ├── SectionsDataProcessingObjc
│ │ ├── SectionsDataProcessingObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── SectionsDataProcessingObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── SectionsDataProcessingSwift
│ │ ├── SectionsDataProcessingSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── SectionsDataProcessingSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
└── SectionsDataProcessing.md
├── 20.SectionIndexTitles
├── Sample Code
│ ├── SectionIndexTitlesObjc
│ │ ├── SectionIndexTitlesObjc.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ │ └── contents.xcworkspacedata
│ │ └── SectionIndexTitlesObjc
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.h
│ │ │ ├── ViewController.m
│ │ │ └── main.m
│ └── SectionIndexTitlesSwift
│ │ ├── SectionIndexTitlesSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── SectionIndexTitlesSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── ViewController.swift
├── SectionIndexTitles.md
├── Support Files
│ └── Screenshots.key
└── images
│ ├── index_titles_contacts.png
│ ├── index_titles_narrower.png
│ └── index_titles_too_wide.png
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | build/
4 | *.pbxuser
5 | !default.pbxuser
6 | *.mode1v3
7 | !default.mode1v3
8 | *.mode2v3
9 | !default.mode2v3
10 | *.perspectivev3
11 | !default.perspectivev3
12 | xcuserdata
13 | *.xccheckout
14 | *.moved-aside
15 | DerivedData
16 | *.hmap
17 | *.ipa
18 | *.xcuserstate
19 |
20 | # CocoaPods
21 | #
22 | # We recommend against adding the Pods directory to your .gitignore. However
23 | # you should judge for yourself, the pros and cons are mentioned at:
24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
25 | #
26 | #Pods/
27 |
--------------------------------------------------------------------------------
/01.Concepts/Support Files/ConceptScreenshot1/ConceptScreenshot1.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/01.Concepts/Support Files/ConceptScreenshot1/ConceptScreenshot1/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/01.Concepts/Support Files/ConceptScreenshot1/ConceptScreenshot1/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/01.Concepts/Support Files/ConceptScreenshot2/ConceptScreenshot2.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/01.Concepts/Support Files/ConceptScreenshot2/ConceptScreenshot2/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/01.Concepts/Support Files/ConceptScreenshot2/ConceptScreenshot2/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/01.Concepts/Support Files/ConceptScreenshot2/ConceptScreenshot2/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // ConceptScreenshot2
4 | //
5 | // Created by Brian Slick on 12/23/15.
6 | // Copyright © 2015 Brian Slick. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
12 |
13 | @IBOutlet weak var tableView: UITableView!
14 |
15 | override func viewDidLoad() {
16 | super.viewDidLoad()
17 | // Do any additional setup after loading the view, typically from a nib.
18 | }
19 |
20 | override func didReceiveMemoryWarning() {
21 | super.didReceiveMemoryWarning()
22 | // Dispose of any resources that can be recreated.
23 | }
24 |
25 | func numberOfSectionsInTableView(tableView: UITableView) -> Int {
26 | return 5
27 | }
28 |
29 | func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
30 | return section + 1
31 | }
32 |
33 | func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
34 | return "Section \(section)"
35 | }
36 |
37 | func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
38 | let cell = UITableViewCell.init(style: .Default, reuseIdentifier: "blah")
39 | cell.textLabel?.text = "Row \(indexPath.row)"
40 | return cell
41 | }
42 | }
43 |
44 |
--------------------------------------------------------------------------------
/01.Concepts/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/01.Concepts/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/01.Concepts/images/concepts_indexpath.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/01.Concepts/images/concepts_indexpath.png
--------------------------------------------------------------------------------
/01.Concepts/images/concepts_table_styles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/01.Concepts/images/concepts_table_styles.png
--------------------------------------------------------------------------------
/01.Concepts/images/concepts_terms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/01.Concepts/images/concepts_terms.png
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithObjcCode/SetupWithObjcCode.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithObjcCode/SetupWithObjcCode/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // SetupWithObjcCode
4 | //
5 | // Created by Brian Slick on 1/5/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithObjcCode/SetupWithObjcCode/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithObjcCode/SetupWithObjcCode/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithObjcCode/SetupWithObjcCode/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithObjcCode/SetupWithObjcCode/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // SetupWithObjcCode
4 | //
5 | // Created by Brian Slick on 1/5/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithObjcCode/SetupWithObjcCode/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // SetupWithObjcCode
4 | //
5 | // Created by Brian Slick on 1/5/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithSwiftCode/SetupWithSwiftCode.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithSwiftCode/SetupWithSwiftCode/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithSwiftCode/SetupWithSwiftCode/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/02.SetupWithCode/Sample Code/SetupWithSwiftCode/SetupWithSwiftCode/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/02.SetupWithCode/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/02.SetupWithCode/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/02.SetupWithCode/images/setup_finished.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/02.SetupWithCode/images/setup_finished.png
--------------------------------------------------------------------------------
/02.SetupWithCode/images/setup_first_run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/02.SetupWithCode/images/setup_first_run.png
--------------------------------------------------------------------------------
/02.SetupWithCode/images/setup_jump_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/02.SetupWithCode/images/setup_jump_bar.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithObjcStoryboards/SetupWithObjcStoryboards.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithObjcStoryboards/SetupWithObjcStoryboards/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // SetupWithObjcStoryboards
4 | //
5 | // Created by Brian Slick on 1/6/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithObjcStoryboards/SetupWithObjcStoryboards/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithObjcStoryboards/SetupWithObjcStoryboards/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithObjcStoryboards/SetupWithObjcStoryboards/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // SetupWithObjcStoryboards
4 | //
5 | // Created by Brian Slick on 1/6/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithObjcStoryboards/SetupWithObjcStoryboards/ViewController.m:
--------------------------------------------------------------------------------
1 | #import "ViewController.h"
2 |
3 | @interface ViewController ()
4 |
5 | @property (weak, nonatomic) IBOutlet UITableView *tableView;
6 |
7 | @end
8 |
9 | @implementation ViewController
10 |
11 | #pragma mark - UITableViewDataSource Methods
12 |
13 | - (NSInteger)tableView:(UITableView *)tableView
14 | numberOfRowsInSection:(NSInteger)section
15 | {
16 | return 3;
17 | }
18 |
19 | - (UITableViewCell *)tableView:(UITableView *)tableView
20 | cellForRowAtIndexPath:(NSIndexPath *)indexPath
21 | {
22 | UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Default"];
23 |
24 | [[cell textLabel] setText:@"Hello, World"];
25 |
26 | return cell;
27 | }
28 |
29 | #pragma mark - UITableViewDelegate Methods
30 |
31 | - (void)tableView:(UITableView *)tableView
32 | didSelectRowAtIndexPath:(NSIndexPath *)indexPath
33 | {
34 | [tableView deselectRowAtIndexPath:indexPath animated:YES];
35 |
36 | NSLog(@"Tapped row %ld", [indexPath row]);
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithObjcStoryboards/SetupWithObjcStoryboards/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // SetupWithObjcStoryboards
4 | //
5 | // Created by Brian Slick on 1/6/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithSwiftStoryboards/SetupWithSwiftStoryboards.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithSwiftStoryboards/SetupWithSwiftStoryboards/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithSwiftStoryboards/SetupWithSwiftStoryboards/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Sample Code/SetupWithSwiftStoryboards/SetupWithSwiftStoryboards/ViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
4 | {
5 | @IBOutlet weak var tableView: UITableView!
6 |
7 | // MARK: - UITableViewDataSource Methods
8 |
9 | func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
10 | {
11 | return 3
12 | }
13 |
14 | func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
15 | {
16 | let cell = UITableViewCell.init(style: .Default, reuseIdentifier: "Default")
17 |
18 | cell.textLabel?.text = "Hello, World"
19 |
20 | return cell
21 | }
22 |
23 | // MARK: - UITableViewDelegate Methods
24 |
25 | func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
26 | {
27 | tableView.deselectRowAtIndexPath(indexPath, animated: true)
28 |
29 | print("Tapped row \(indexPath.row)")
30 | }
31 | }
32 |
33 |
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboard_connections_panel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboard_connections_panel.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_assistant_editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_assistant_editor.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_connect_outlet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_connect_outlet.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_connections_complete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_connections_complete.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_constraints.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_constraints.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_drag_connect_delegate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_drag_connect_delegate.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_drag_connect_outlet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_drag_connect_outlet.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_drag_table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_drag_table.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_initial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_initial.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_primary_editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_primary_editor.png
--------------------------------------------------------------------------------
/03.SetupWithStoryboards/images/storyboards_table_style.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/03.SetupWithStoryboards/images/storyboards_table_style.png
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithObjcIB/SetupWithObjcIB.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithObjcIB/SetupWithObjcIB/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // SetupWithObjcIB
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithObjcIB/SetupWithObjcIB/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithObjcIB/SetupWithObjcIB/CustomViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CustomViewController.h
3 | // SetupWithObjcIB
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface CustomViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithObjcIB/SetupWithObjcIB/CustomViewController.m:
--------------------------------------------------------------------------------
1 | #import "CustomViewController.h"
2 |
3 | @interface CustomViewController ()
4 |
5 | @property (weak, nonatomic) IBOutlet UITableView *tableView;
6 |
7 | @end
8 |
9 | @implementation CustomViewController
10 |
11 | #pragma mark - UITableViewDataSource Methods
12 |
13 | - (NSInteger)tableView:(UITableView *)tableView
14 | numberOfRowsInSection:(NSInteger)section
15 | {
16 | return 3;
17 | }
18 |
19 | - (UITableViewCell *)tableView:(UITableView *)tableView
20 | cellForRowAtIndexPath:(NSIndexPath *)indexPath
21 | {
22 | UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Default"];
23 |
24 | [[cell textLabel] setText:@"Hello, World"];
25 |
26 | return cell;
27 | }
28 |
29 | #pragma mark - UITableViewDelegate Methods
30 |
31 | - (void)tableView:(UITableView *)tableView
32 | didSelectRowAtIndexPath:(NSIndexPath *)indexPath
33 | {
34 | [tableView deselectRowAtIndexPath:indexPath animated:YES];
35 |
36 | NSLog(@"Tapped row %ld", [indexPath row]);
37 | }
38 |
39 | @end
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithObjcIB/SetupWithObjcIB/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithObjcIB/SetupWithObjcIB/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // SetupWithObjcIB
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithObjcIB/SetupWithObjcIB/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // SetupWithObjcIB
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "CustomViewController.h"
11 |
12 | @interface ViewController ()
13 |
14 | @end
15 |
16 | @implementation ViewController
17 |
18 | - (void)viewDidLoad {
19 | [super viewDidLoad];
20 | // Do any additional setup after loading the view, typically from a nib.
21 | }
22 |
23 | - (IBAction)showButtonPressed:(id)sender
24 | {
25 | CustomViewController *customViewController = [[CustomViewController alloc] init];
26 |
27 | [self presentViewController:customViewController animated:YES completion:nil];
28 | }
29 |
30 | - (void)didReceiveMemoryWarning {
31 | [super didReceiveMemoryWarning];
32 | // Dispose of any resources that can be recreated.
33 | }
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithObjcIB/SetupWithObjcIB/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // SetupWithObjcIB
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithSwiftIB/SetupWithSwiftIB.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithSwiftIB/SetupWithSwiftIB/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithSwiftIB/SetupWithSwiftIB/CustomViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class CustomViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
4 | {
5 | @IBOutlet weak var tableView: UITableView!
6 |
7 | // MARK: - UITableViewDataSource Methods
8 |
9 | func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
10 | {
11 | return 3
12 | }
13 |
14 | func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
15 | {
16 | let cell = UITableViewCell.init(style: .Default, reuseIdentifier: "Default")
17 |
18 | cell.textLabel?.text = "Hello, World"
19 |
20 | return cell
21 | }
22 |
23 | // MARK: - UITableViewDelegate Methods
24 |
25 | func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
26 | {
27 | tableView.deselectRowAtIndexPath(indexPath, animated: true)
28 |
29 | print("Tapped row \(indexPath.row)")
30 | }
31 | }
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithSwiftIB/SetupWithSwiftIB/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Sample Code/SetupWithSwiftIB/SetupWithSwiftIB/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // SetupWithSwiftIB
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | // Do any additional setup after loading the view, typically from a nib.
16 | }
17 |
18 | @IBAction func showButtonPressed(sender: AnyObject)
19 | {
20 | let customViewController = CustomViewController()
21 | presentViewController(customViewController, animated: true, completion: nil)
22 | }
23 |
24 | override func didReceiveMemoryWarning() {
25 | super.didReceiveMemoryWarning()
26 | // Dispose of any resources that can be recreated.
27 | }
28 |
29 |
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/04.SetupWithInterfaceBuilder/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/images/ib_button_action.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/04.SetupWithInterfaceBuilder/images/ib_button_action.png
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/images/ib_connect_delegate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/04.SetupWithInterfaceBuilder/images/ib_connect_delegate.png
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/images/ib_new_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/04.SetupWithInterfaceBuilder/images/ib_new_file.png
--------------------------------------------------------------------------------
/04.SetupWithInterfaceBuilder/images/ib_new_file_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/04.SetupWithInterfaceBuilder/images/ib_new_file_2.png
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // TVCObjc
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc/CustomTableViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CustomTableViewController.h
3 | // TVCObjc
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface CustomTableViewController : UITableViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc/CustomTableViewController.m:
--------------------------------------------------------------------------------
1 | #import "CustomTableViewController.h"
2 |
3 | @interface CustomTableViewController ()
4 |
5 | @end
6 |
7 | @implementation CustomTableViewController
8 |
9 | - (void)viewDidLoad
10 | {
11 | [super viewDidLoad];
12 |
13 | NSLog(@"%@", self.view);
14 | NSLog(@"%@", self.tableView);
15 |
16 | UIView *subview = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];
17 | [subview setBackgroundColor:[UIColor redColor]];
18 | [[self view] addSubview:subview];
19 | }
20 |
21 | #pragma mark - UITableViewDataSource Methods
22 |
23 | - (NSInteger)tableView:(UITableView *)tableView
24 | numberOfRowsInSection:(NSInteger)section
25 | {
26 | return 3;
27 | }
28 |
29 | - (UITableViewCell *)tableView:(UITableView *)tableView
30 | cellForRowAtIndexPath:(NSIndexPath *)indexPath
31 | {
32 | UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Default"];
33 |
34 | [[cell textLabel] setText:@"Hello, World"];
35 |
36 | return cell;
37 | }
38 |
39 | #pragma mark - UITableViewDelegate Methods
40 |
41 | - (void)tableView:(UITableView *)tableView
42 | didSelectRowAtIndexPath:(NSIndexPath *)indexPath
43 | {
44 | [tableView deselectRowAtIndexPath:indexPath animated:YES];
45 |
46 | NSLog(@"Tapped row %ld", [indexPath row]);
47 | }
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // TVCObjc
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // TVCObjc
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "CustomTableViewController.h"
11 |
12 | @interface ViewController ()
13 |
14 | @end
15 |
16 | @implementation ViewController
17 |
18 | - (void)viewDidLoad {
19 | [super viewDidLoad];
20 | // Do any additional setup after loading the view, typically from a nib.
21 | }
22 |
23 | - (IBAction)showViewButtonPressed:(id)sender
24 | {
25 | CustomTableViewController *customTableViewController = [[CustomTableViewController alloc] initWithStyle:UITableViewStylePlain];
26 | [self presentViewController:customTableViewController animated:YES completion:nil];
27 | }
28 |
29 | - (void)didReceiveMemoryWarning {
30 | [super didReceiveMemoryWarning];
31 | // Dispose of any resources that can be recreated.
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCObjc/TVCObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // TVCObjc
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCSwift/TVCSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCSwift/TVCSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCSwift/TVCSwift/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCSwift/TVCSwift/CustomTableViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class CustomTableViewController: UITableViewController
4 | {
5 | override func viewDidLoad()
6 | {
7 | super.viewDidLoad()
8 |
9 | print("\(view)")
10 | print("\(tableView)")
11 |
12 | let subview = UIView.init(frame: CGRectMake(50, 50, 100, 100))
13 | subview.backgroundColor = UIColor.redColor()
14 | view.addSubview(subview)
15 | }
16 |
17 | // MARK: - UITableViewDataSource Methods
18 |
19 | override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
20 | {
21 | return 3
22 | }
23 |
24 | override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
25 | {
26 | let cell = UITableViewCell.init(style: .Default, reuseIdentifier: "Default")
27 |
28 | cell.textLabel?.text = "Hello, World"
29 |
30 | return cell
31 | }
32 |
33 | // MARK: - UITableViewDelegate Methods
34 |
35 | override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
36 | {
37 | tableView.deselectRowAtIndexPath(indexPath, animated: true)
38 |
39 | print("Tapped row \(indexPath.row)")
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCSwift/TVCSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/05.UITableViewController/Sample Code/TVCSwift/TVCSwift/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // TVCSwift
4 | //
5 | // Created by Brian Slick on 1/7/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 | // Do any additional setup after loading the view, typically from a nib.
16 | }
17 |
18 | @IBAction func showViewButtonPressed(sender: AnyObject)
19 | {
20 | let customTableViewController = CustomTableViewController(style: .Plain)
21 | presentViewController(customTableViewController, animated: true, completion: nil)
22 | }
23 |
24 | override func didReceiveMemoryWarning() {
25 | super.didReceiveMemoryWarning()
26 | // Dispose of any resources that can be recreated.
27 | }
28 |
29 |
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesObjc/CellStylesObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesObjc/CellStylesObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // CellStylesObjc
4 | //
5 | // Created by Brian Slick on 1/8/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesObjc/CellStylesObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesObjc/CellStylesObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesObjc/CellStylesObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // CellStylesObjc
4 | //
5 | // Created by Brian Slick on 1/8/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesObjc/CellStylesObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // CellStylesObjc
4 | //
5 | // Created by Brian Slick on 1/8/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesSwift/CellStylesSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesSwift/CellStylesSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesSwift/CellStylesSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/CellStylesSwift/CellStylesSwift/ViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
4 | {
5 | @IBOutlet weak var tableView: UITableView!
6 |
7 | // MARK: - UITableViewDataSource Methods
8 |
9 | func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
10 | {
11 | return 5
12 | }
13 |
14 | func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
15 | {
16 | var cell: UITableViewCell
17 |
18 | switch(indexPath.row)
19 | {
20 | case 1:
21 | cell = UITableViewCell(style: .Value1, reuseIdentifier: "Value1")
22 | cell.accessoryType = .DisclosureIndicator
23 | case 2:
24 | cell = UITableViewCell(style: .Value2, reuseIdentifier: "Value2")
25 | cell.accessoryType = .DetailDisclosureButton
26 | case 3:
27 | cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "Subtitle")
28 | cell.accessoryType = .Checkmark
29 | case 4:
30 | cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "Subtitle2")
31 | cell.textLabel?.text = "Hello"
32 | cell.accessoryType = .DetailButton
33 | return cell
34 | default:
35 | cell = UITableViewCell(style: .Default, reuseIdentifier: "Default")
36 | cell.accessoryType = .None
37 | }
38 |
39 | cell.textLabel?.text = "Hello"
40 | cell.detailTextLabel?.text = "World"
41 | cell.accessoryView = UISwitch()
42 | cell.imageView?.image = UIImage(named: "image")
43 |
44 | return cell
45 | }
46 | }
47 |
48 |
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/06.UITableViewCell/Sample Code/image.png
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/image@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/06.UITableViewCell/Sample Code/image@2x.png
--------------------------------------------------------------------------------
/06.UITableViewCell/Sample Code/image@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/06.UITableViewCell/Sample Code/image@3x.png
--------------------------------------------------------------------------------
/06.UITableViewCell/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/06.UITableViewCell/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/06.UITableViewCell/images/cell_accessories.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/06.UITableViewCell/images/cell_accessories.png
--------------------------------------------------------------------------------
/06.UITableViewCell/images/cell_accessory_view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/06.UITableViewCell/images/cell_accessory_view.png
--------------------------------------------------------------------------------
/06.UITableViewCell/images/cell_imageview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/06.UITableViewCell/images/cell_imageview.png
--------------------------------------------------------------------------------
/06.UITableViewCell/images/cell_styles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/06.UITableViewCell/images/cell_styles.png
--------------------------------------------------------------------------------
/06.UITableViewCell/images/cell_styles_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/06.UITableViewCell/images/cell_styles_2.png
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseObjc/CellReuseObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseObjc/CellReuseObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // CellReuseObjc
4 | //
5 | // Created by Brian Slick on 1/8/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseObjc/CellReuseObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseObjc/CellReuseObjc/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseObjc/CellReuseObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseObjc/CellReuseObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // CellReuseObjc
4 | //
5 | // Created by Brian Slick on 1/8/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseObjc/CellReuseObjc/ViewController.m:
--------------------------------------------------------------------------------
1 | #import "ViewController.h"
2 |
3 | @interface ViewController ()
4 |
5 | @property (weak, nonatomic) IBOutlet UITableView *tableView;
6 | @property (nonatomic, assign) NSInteger numberOfCellsCreated;
7 |
8 | @end
9 |
10 | @implementation ViewController
11 |
12 | #pragma mark - UITableViewDataSource Methods
13 |
14 | - (NSInteger)tableView:(UITableView *)tableView
15 | numberOfRowsInSection:(NSInteger)section
16 | {
17 | return 50;
18 | }
19 |
20 | - (UITableViewCell *)tableView:(UITableView *)tableView
21 | cellForRowAtIndexPath:(NSIndexPath *)indexPath
22 | {
23 | static NSString *identifier = @"Default";
24 |
25 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
26 | if (cell == nil)
27 | {
28 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
29 | self.numberOfCellsCreated++;
30 | NSLog(@"Number of cells created: %ld", (long)self.numberOfCellsCreated);
31 | }
32 |
33 | [[cell textLabel] setText:@"Hello, World"];
34 |
35 | if ([indexPath row] == 3)
36 | {
37 | [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
38 | }
39 | else
40 | {
41 | [cell setAccessoryType:UITableViewCellAccessoryNone];
42 | }
43 |
44 | return cell;
45 | }
46 |
47 | @end
48 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseObjc/CellReuseObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // CellReuseObjc
4 | //
5 | // Created by Brian Slick on 1/8/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseSwift/CellReuseSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseSwift/CellReuseSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseSwift/CellReuseSwift/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseSwift/CellReuseSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/07.CellReuse/Sample Code/CellReuseSwift/CellReuseSwift/ViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
4 | {
5 | @IBOutlet weak var tableView: UITableView!
6 | var numberOfCellsCreated = 0
7 |
8 | // MARK: - UITableViewDataSource Methods
9 |
10 | func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
11 | {
12 | return 50
13 | }
14 |
15 | func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
16 | {
17 | let identifier = "Default"
18 |
19 | var optionalCell = tableView.dequeueReusableCellWithIdentifier(identifier)
20 | if (optionalCell == nil)
21 | {
22 | optionalCell = UITableViewCell.init(style: .Default, reuseIdentifier: identifier)
23 | numberOfCellsCreated++
24 | print("Number of cells created: \(numberOfCellsCreated)")
25 | }
26 |
27 | // At this point, we are certain we have a cell. So let's map to a new variable so that we don't have to deal with the optional past this point.
28 | let cell = optionalCell!
29 |
30 | cell.textLabel?.text = "Hello, World"
31 |
32 | if indexPath.row == 3
33 | {
34 | cell.accessoryType = .Checkmark
35 | }
36 | else
37 | {
38 | cell.accessoryType = .None
39 | }
40 |
41 | return cell
42 | }
43 | }
44 |
45 |
--------------------------------------------------------------------------------
/07.CellReuse/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/07.CellReuse/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/07.CellReuse/images/cell_reuse_checkmarks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/07.CellReuse/images/cell_reuse_checkmarks.png
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureObjc/BasicDataStructureObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureObjc/BasicDataStructureObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // BasicDataStructureObjc
4 | //
5 | // Created by Brian Slick on 1/10/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureObjc/BasicDataStructureObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureObjc/BasicDataStructureObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureObjc/BasicDataStructureObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // BasicDataStructureObjc
4 | //
5 | // Created by Brian Slick on 1/10/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureObjc/BasicDataStructureObjc/ViewController.m:
--------------------------------------------------------------------------------
1 | #import "ViewController.h"
2 |
3 | @interface ViewController ()
4 |
5 | @property (weak, nonatomic) IBOutlet UITableView *tableView;
6 | @property (nonatomic, strong) NSArray *contents;
7 |
8 | @end
9 |
10 | @implementation ViewController
11 |
12 | - (void)viewDidLoad
13 | {
14 | [super viewDidLoad];
15 |
16 | [self setContents:@[ @"Red", @"Orange", @"Yellow", @"Green", @"Blue", @"Magenta"]];
17 | }
18 |
19 | #pragma mark - UITableViewDataSource Methods
20 |
21 | - (NSInteger)tableView:(UITableView *)tableView
22 | numberOfRowsInSection:(NSInteger)section
23 | {
24 | return [[self contents] count];
25 | }
26 |
27 | - (UITableViewCell *)tableView:(UITableView *)tableView
28 | cellForRowAtIndexPath:(NSIndexPath *)indexPath
29 | {
30 | static NSString *identifier = @"PlainCell";
31 |
32 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
33 | if (cell == nil)
34 | {
35 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
36 | }
37 |
38 | NSString *rowValue = [[self contents] objectAtIndex:[indexPath row]];
39 |
40 | [[cell textLabel] setText:rowValue];
41 |
42 | return cell;
43 | }
44 |
45 | #pragma mark - UITableViewDelegate Methods
46 |
47 | - (void)tableView:(UITableView *)tableView
48 | didSelectRowAtIndexPath:(NSIndexPath *)indexPath
49 | {
50 | [tableView deselectRowAtIndexPath:indexPath animated:YES];
51 |
52 | NSString *rowValue = [[self contents] objectAtIndex:[indexPath row]];
53 |
54 | NSLog(@"%@", rowValue);
55 | }
56 |
57 | @end
58 |
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureObjc/BasicDataStructureObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // BasicDataStructureObjc
4 | //
5 | // Created by Brian Slick on 1/10/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureSwift/BasicDataStructureSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureSwift/BasicDataStructureSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureSwift/BasicDataStructureSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/08.BasicDataStructure/Sample Code/BasicDataStructureSwift/BasicDataStructureSwift/ViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
4 | {
5 | @IBOutlet weak var tableView: UITableView!
6 | var contents = [String]()
7 |
8 | override func viewDidLoad()
9 | {
10 | super.viewDidLoad()
11 |
12 | contents = [ "Red", "Orange", "Yellow", "Green", "Blue", "Magenta" ]
13 | }
14 |
15 | // MARK: - UITableViewDataSource Methods
16 |
17 | func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
18 | {
19 | return contents.count
20 | }
21 |
22 | func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
23 | {
24 | let identifier = "PlainCell"
25 |
26 | var optionalCell = tableView.dequeueReusableCellWithIdentifier(identifier)
27 | if (optionalCell == nil)
28 | {
29 | optionalCell = UITableViewCell.init(style: .Default, reuseIdentifier: identifier)
30 | }
31 |
32 | let cell = optionalCell!
33 |
34 | let rowValue = contents[indexPath.row];
35 |
36 | cell.textLabel?.text = rowValue
37 |
38 | return cell
39 | }
40 |
41 | // MARK: - UITableViewDelegate Methods
42 |
43 | func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
44 | {
45 | tableView.deselectRowAtIndexPath(indexPath, animated: true)
46 |
47 | let rowValue = contents[indexPath.row];
48 |
49 | print(rowValue)
50 | }
51 | }
52 |
53 |
--------------------------------------------------------------------------------
/09.HandlingRowTaps/Sample Code/HandlingRowTapsObjc/HandlingRowTapsObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/09.HandlingRowTaps/Sample Code/HandlingRowTapsObjc/HandlingRowTapsObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // HandlingRowTapsObjc
4 | //
5 | // Created by Brian Slick on 1/11/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/09.HandlingRowTaps/Sample Code/HandlingRowTapsObjc/HandlingRowTapsObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/09.HandlingRowTaps/Sample Code/HandlingRowTapsObjc/HandlingRowTapsObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/09.HandlingRowTaps/Sample Code/HandlingRowTapsObjc/HandlingRowTapsObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // HandlingRowTapsObjc
4 | //
5 | // Created by Brian Slick on 1/11/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/09.HandlingRowTaps/Sample Code/HandlingRowTapsObjc/HandlingRowTapsObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // HandlingRowTapsObjc
4 | //
5 | // Created by Brian Slick on 1/11/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/09.HandlingRowTaps/Sample Code/HandlingRowTapsSwift/HandlingRowTapsSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/09.HandlingRowTaps/Sample Code/HandlingRowTapsSwift/HandlingRowTapsSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/09.HandlingRowTaps/Sample Code/HandlingRowTapsSwift/HandlingRowTapsSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/10.DeletingRows/Sample Code/DeletingRowsObjc/DeletingRowsObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/10.DeletingRows/Sample Code/DeletingRowsObjc/DeletingRowsObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // DeletingRowsObjc
4 | //
5 | // Created by Brian Slick on 1/11/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/10.DeletingRows/Sample Code/DeletingRowsObjc/DeletingRowsObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/10.DeletingRows/Sample Code/DeletingRowsObjc/DeletingRowsObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/10.DeletingRows/Sample Code/DeletingRowsObjc/DeletingRowsObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // DeletingRowsObjc
4 | //
5 | // Created by Brian Slick on 1/11/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/10.DeletingRows/Sample Code/DeletingRowsObjc/DeletingRowsObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // DeletingRowsObjc
4 | //
5 | // Created by Brian Slick on 1/11/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/10.DeletingRows/Sample Code/DeletingRowsSwift/DeletingRowsSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/10.DeletingRows/Sample Code/DeletingRowsSwift/DeletingRowsSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/10.DeletingRows/Sample Code/DeletingRowsSwift/DeletingRowsSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/10.DeletingRows/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/10.DeletingRows/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/10.DeletingRows/images/deleting_swiped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/10.DeletingRows/images/deleting_swiped.png
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeObjc/EditingModeObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeObjc/EditingModeObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // EditingModeObjc
4 | //
5 | // Created by Brian Slick on 1/13/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeObjc/EditingModeObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeObjc/EditingModeObjc/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeObjc/EditingModeObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeObjc/EditingModeObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // EditingModeObjc
4 | //
5 | // Created by Brian Slick on 1/13/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeObjc/EditingModeObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // EditingModeObjc
4 | //
5 | // Created by Brian Slick on 1/13/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeSwift/EditingModeSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeSwift/EditingModeSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/11.EditingMode/Sample Code/EditingModeSwift/EditingModeSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/11.EditingMode/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/11.EditingMode/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/11.EditingMode/images/editing_accessories.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/11.EditingMode/images/editing_accessories.png
--------------------------------------------------------------------------------
/11.EditingMode/images/editing_editbuttonitem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/11.EditingMode/images/editing_editbuttonitem.png
--------------------------------------------------------------------------------
/11.EditingMode/images/editing_editingmodeon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/11.EditingMode/images/editing_editingmodeon.png
--------------------------------------------------------------------------------
/11.EditingMode/images/editing_setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/11.EditingMode/images/editing_setup.png
--------------------------------------------------------------------------------
/11.EditingMode/images/editing_styles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/11.EditingMode/images/editing_styles.png
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsObjc/AddingRowsObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsObjc/AddingRowsObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // AddingRowsObjc
4 | //
5 | // Created by Brian Slick on 1/13/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsObjc/AddingRowsObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsObjc/AddingRowsObjc/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsObjc/AddingRowsObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsObjc/AddingRowsObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // AddingRowsObjc
4 | //
5 | // Created by Brian Slick on 1/13/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsObjc/AddingRowsObjc/ViewController.m:
--------------------------------------------------------------------------------
1 | #import "ViewController.h"
2 |
3 | @interface ViewController ()
4 |
5 | @property (weak, nonatomic) IBOutlet UITableView *tableView;
6 | @property (nonatomic, strong) NSMutableArray *contents;
7 |
8 | @end
9 |
10 | @implementation ViewController
11 |
12 | - (void)viewDidLoad
13 | {
14 | [super viewDidLoad];
15 |
16 | [self setContents:[@[ @"Red", @"Orange", @"Yellow", @"Green", @"Blue", @"Magenta"] mutableCopy]];
17 | }
18 |
19 | - (IBAction)addButtonTapped:(UIButton *)sender
20 | {
21 | [[self contents] insertObject:@"Black" atIndex:0];
22 |
23 | NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
24 |
25 | [[self tableView] insertRowsAtIndexPaths:@[ indexPath ] withRowAnimation:UITableViewRowAnimationAutomatic];
26 | }
27 |
28 | #pragma mark - UITableViewDataSource Methods
29 |
30 | - (NSInteger)tableView:(UITableView *)tableView
31 | numberOfRowsInSection:(NSInteger)section
32 | {
33 | return [[self contents] count];
34 | }
35 |
36 | - (UITableViewCell *)tableView:(UITableView *)tableView
37 | cellForRowAtIndexPath:(NSIndexPath *)indexPath
38 | {
39 | static NSString *identifier = @"PlainCell";
40 |
41 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
42 | if (cell == nil)
43 | {
44 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
45 | }
46 |
47 | NSString *rowValue = [[self contents] objectAtIndex:[indexPath row]];
48 |
49 | [[cell textLabel] setText:rowValue];
50 |
51 | return cell;
52 | }
53 |
54 | @end
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsObjc/AddingRowsObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // AddingRowsObjc
4 | //
5 | // Created by Brian Slick on 1/13/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsSwift/AddingRowsSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsSwift/AddingRowsSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsSwift/AddingRowsSwift/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsSwift/AddingRowsSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/12.AddingRows/Sample Code/AddingRowsSwift/AddingRowsSwift/ViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
4 | {
5 | @IBOutlet weak var tableView: UITableView!
6 | var contents = [String]()
7 |
8 | override func viewDidLoad()
9 | {
10 | super.viewDidLoad()
11 |
12 | contents = [ "Red", "Orange", "Yellow", "Green", "Blue", "Magenta" ]
13 | }
14 |
15 | @IBAction func addButtonTapped(sender: UIButton)
16 | {
17 | contents.insert("Black", atIndex: 0)
18 |
19 | let indexPath = NSIndexPath.init(forRow: 0, inSection: 0)
20 |
21 | tableView.insertRowsAtIndexPaths([ indexPath ], withRowAnimation: .Automatic)
22 | }
23 |
24 | // MARK: - UITableViewDataSource Methods
25 |
26 | func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
27 | {
28 | return contents.count
29 | }
30 |
31 | func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
32 | {
33 | let identifier = "PlainCell"
34 |
35 | var optionalCell = tableView.dequeueReusableCellWithIdentifier(identifier)
36 | if (optionalCell == nil)
37 | {
38 | optionalCell = UITableViewCell.init(style: .Default, reuseIdentifier: identifier)
39 | }
40 |
41 | let cell = optionalCell!
42 |
43 | let rowValue = contents[indexPath.row];
44 |
45 | cell.textLabel?.text = rowValue
46 |
47 | return cell
48 | }
49 | }
--------------------------------------------------------------------------------
/12.AddingRows/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/12.AddingRows/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/12.AddingRows/images/adding_setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/12.AddingRows/images/adding_setup.png
--------------------------------------------------------------------------------
/13.ReorderingRows/Sample Code/ReorderingRowsObjc/ReorderingRowsObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/13.ReorderingRows/Sample Code/ReorderingRowsObjc/ReorderingRowsObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // ReorderingRowsObjc
4 | //
5 | // Created by Brian Slick on 1/14/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/13.ReorderingRows/Sample Code/ReorderingRowsObjc/ReorderingRowsObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/13.ReorderingRows/Sample Code/ReorderingRowsObjc/ReorderingRowsObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/13.ReorderingRows/Sample Code/ReorderingRowsObjc/ReorderingRowsObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // ReorderingRowsObjc
4 | //
5 | // Created by Brian Slick on 1/14/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/13.ReorderingRows/Sample Code/ReorderingRowsObjc/ReorderingRowsObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // ReorderingRowsObjc
4 | //
5 | // Created by Brian Slick on 1/14/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/13.ReorderingRows/Sample Code/ReorderingRowsSwift/ReorderingRowsSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/13.ReorderingRows/Sample Code/ReorderingRowsSwift/ReorderingRowsSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/13.ReorderingRows/Sample Code/ReorderingRowsSwift/ReorderingRowsSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/13.ReorderingRows/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/13.ReorderingRows/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/13.ReorderingRows/images/reordering_no_source_drag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/13.ReorderingRows/images/reordering_no_source_drag.png
--------------------------------------------------------------------------------
/13.ReorderingRows/images/reordering_no_target_drag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/13.ReorderingRows/images/reordering_no_target_drag.png
--------------------------------------------------------------------------------
/13.ReorderingRows/images/reordering_setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/13.ReorderingRows/images/reordering_setup.png
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleCheckmarksObjc/MultipleCheckmarksObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleCheckmarksObjc/MultipleCheckmarksObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // MultipleCheckmarksObjc
4 | //
5 | // Created by Brian Slick on 1/15/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleCheckmarksObjc/MultipleCheckmarksObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleCheckmarksObjc/MultipleCheckmarksObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleCheckmarksObjc/MultipleCheckmarksObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // MultipleCheckmarksObjc
4 | //
5 | // Created by Brian Slick on 1/15/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleCheckmarksObjc/MultipleCheckmarksObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // MultipleCheckmarksObjc
4 | //
5 | // Created by Brian Slick on 1/15/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleCheckmarksSwift/MultipleCheckmarksSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleCheckmarksSwift/MultipleCheckmarksSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleCheckmarksSwift/MultipleCheckmarksSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleDeleteObjc/MultipleDeleteObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleDeleteObjc/MultipleDeleteObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // MultipleDeleteObjc
4 | //
5 | // Created by Brian Slick on 1/14/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleDeleteObjc/MultipleDeleteObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleDeleteObjc/MultipleDeleteObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleDeleteObjc/MultipleDeleteObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // MultipleDeleteObjc
4 | //
5 | // Created by Brian Slick on 1/14/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleDeleteObjc/MultipleDeleteObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // MultipleDeleteObjc
4 | //
5 | // Created by Brian Slick on 1/14/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleDeleteSwift/MultipleDeleteSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleDeleteSwift/MultipleDeleteSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Sample Code/MultipleDeleteSwift/MultipleDeleteSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/14.MultipleRowSelection/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/14.MultipleRowSelection/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/14.MultipleRowSelection/images/multiple_selection_checkmarks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/14.MultipleRowSelection/images/multiple_selection_checkmarks.png
--------------------------------------------------------------------------------
/14.MultipleRowSelection/images/multiple_selection_deleting_setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/14.MultipleRowSelection/images/multiple_selection_deleting_setup.png
--------------------------------------------------------------------------------
/14.MultipleRowSelection/images/multiple_selection_edit_mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/14.MultipleRowSelection/images/multiple_selection_edit_mode.png
--------------------------------------------------------------------------------
/14.MultipleRowSelection/images/multiple_selection_ib_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/14.MultipleRowSelection/images/multiple_selection_ib_settings.png
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Sample Code/SectionHeadersObjc/SectionHeadersObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Sample Code/SectionHeadersObjc/SectionHeadersObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // SectionHeadersObjc
4 | //
5 | // Created by Brian Slick on 1/16/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Sample Code/SectionHeadersObjc/SectionHeadersObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Sample Code/SectionHeadersObjc/SectionHeadersObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Sample Code/SectionHeadersObjc/SectionHeadersObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // SectionHeadersObjc
4 | //
5 | // Created by Brian Slick on 1/16/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Sample Code/SectionHeadersObjc/SectionHeadersObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // SectionHeadersObjc
4 | //
5 | // Created by Brian Slick on 1/16/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Sample Code/SectionHeadersSwift/SectionHeadersSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Sample Code/SectionHeadersSwift/SectionHeadersSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Sample Code/SectionHeadersSwift/SectionHeadersSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/15.SectionHeadersFooters/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/images/headers_custom_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/15.SectionHeadersFooters/images/headers_custom_1.png
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/images/headers_custom_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/15.SectionHeadersFooters/images/headers_custom_2.png
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/images/headers_footers_full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/15.SectionHeadersFooters/images/headers_footers_full.png
--------------------------------------------------------------------------------
/15.SectionHeadersFooters/images/headers_standard_full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/15.SectionHeadersFooters/images/headers_standard_full.png
--------------------------------------------------------------------------------
/16.SectionsBasicDataStructure/Sample Code/SectionsStructureObjc/SectionsStructureObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/16.SectionsBasicDataStructure/Sample Code/SectionsStructureObjc/SectionsStructureObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // SectionsStructureObjc
4 | //
5 | // Created by Brian Slick on 1/19/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/16.SectionsBasicDataStructure/Sample Code/SectionsStructureObjc/SectionsStructureObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/16.SectionsBasicDataStructure/Sample Code/SectionsStructureObjc/SectionsStructureObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/16.SectionsBasicDataStructure/Sample Code/SectionsStructureObjc/SectionsStructureObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // SectionsStructureObjc
4 | //
5 | // Created by Brian Slick on 1/19/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/16.SectionsBasicDataStructure/Sample Code/SectionsStructureObjc/SectionsStructureObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // SectionsStructureObjc
4 | //
5 | // Created by Brian Slick on 1/19/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/16.SectionsBasicDataStructure/Sample Code/SectionsStructureSwift/SectionsStructureSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/16.SectionsBasicDataStructure/Sample Code/SectionsStructureSwift/SectionsStructureSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/16.SectionsBasicDataStructure/Sample Code/SectionsStructureSwift/SectionsStructureSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/17.SectionsAnotherBasicDataStructure/Sample Code/AnotherSectionsStructureObjc/AnotherSectionsStructureObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/17.SectionsAnotherBasicDataStructure/Sample Code/AnotherSectionsStructureObjc/AnotherSectionsStructureObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // AnotherSectionsStructureObjc
4 | //
5 | // Created by Brian Slick on 1/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/17.SectionsAnotherBasicDataStructure/Sample Code/AnotherSectionsStructureObjc/AnotherSectionsStructureObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/17.SectionsAnotherBasicDataStructure/Sample Code/AnotherSectionsStructureObjc/AnotherSectionsStructureObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/17.SectionsAnotherBasicDataStructure/Sample Code/AnotherSectionsStructureObjc/AnotherSectionsStructureObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // AnotherSectionsStructureObjc
4 | //
5 | // Created by Brian Slick on 1/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/17.SectionsAnotherBasicDataStructure/Sample Code/AnotherSectionsStructureObjc/AnotherSectionsStructureObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // AnotherSectionsStructureObjc
4 | //
5 | // Created by Brian Slick on 1/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/17.SectionsAnotherBasicDataStructure/Sample Code/AnotherSectionsStructureSwift/AnotherSectionsStructureSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/17.SectionsAnotherBasicDataStructure/Sample Code/AnotherSectionsStructureSwift/AnotherSectionsStructureSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/17.SectionsAnotherBasicDataStructure/Sample Code/AnotherSectionsStructureSwift/AnotherSectionsStructureSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelObjc/SectionsCustomModelObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelObjc/SectionsCustomModelObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // SectionsCustomModelObjc
4 | //
5 | // Created by Brian Slick on 1/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelObjc/SectionsCustomModelObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelObjc/SectionsCustomModelObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelObjc/SectionsCustomModelObjc/Models.h:
--------------------------------------------------------------------------------
1 | @import UIKit;
2 |
3 | @interface FoodItem : NSObject
4 |
5 | @property (nonatomic, copy) NSString *name;
6 | @property (nonatomic, copy) UIColor *color;
7 |
8 | - (id)initWithName:(NSString *)name color:(UIColor *)color;
9 |
10 | @end
11 |
12 |
13 | @interface SectionItem : NSObject
14 |
15 | @property (nonatomic, copy) NSString *sectionName;
16 | @property (nonatomic, copy) NSString *sectionFooter;
17 | @property (nonatomic, strong) NSMutableArray *sectionContents;
18 |
19 | @end
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelObjc/SectionsCustomModelObjc/Models.m:
--------------------------------------------------------------------------------
1 | #import "Models.h"
2 |
3 | @implementation FoodItem
4 |
5 | - (id)initWithName:(NSString *)name
6 | color:(UIColor *)color
7 | {
8 | self = [super init];
9 | if (self)
10 | {
11 | _name = name;
12 | _color = color;
13 | }
14 | return self;
15 | }
16 |
17 | @end
18 |
19 |
20 | @implementation SectionItem
21 |
22 | - (id)init
23 | {
24 | self = [super init];
25 | if (self)
26 | {
27 | _sectionContents = [NSMutableArray array];
28 | }
29 | return self;
30 | }
31 |
32 | @end
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelObjc/SectionsCustomModelObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // SectionsCustomModelObjc
4 | //
5 | // Created by Brian Slick on 1/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelObjc/SectionsCustomModelObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // SectionsCustomModelObjc
4 | //
5 | // Created by Brian Slick on 1/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelSwift/SectionsCustomModelSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelSwift/SectionsCustomModelSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelSwift/SectionsCustomModelSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Sample Code/SectionsCustomModelSwift/SectionsCustomModelSwift/Models.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class FoodItem
4 | {
5 | var name = ""
6 | var color: UIColor?
7 |
8 | init(name: String, color: UIColor?)
9 | {
10 | self.name = name
11 | self.color = color
12 | }
13 | }
14 |
15 | class SectionItem
16 | {
17 | var sectionName: String?
18 | var sectionFooter: String?
19 | var sectionContents = [FoodItem]()
20 | }
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/18.SectionsCustomModelObjects/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/images/sections_footer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/18.SectionsCustomModelObjects/images/sections_footer.png
--------------------------------------------------------------------------------
/18.SectionsCustomModelObjects/images/sections_table_colors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/18.SectionsCustomModelObjects/images/sections_table_colors.png
--------------------------------------------------------------------------------
/19.SectionsDataProcessing/Sample Code/SectionsDataProcessingObjc/SectionsDataProcessingObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/19.SectionsDataProcessing/Sample Code/SectionsDataProcessingObjc/SectionsDataProcessingObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // SectionsDataProcessingObjc
4 | //
5 | // Created by Brian Slick on 1/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/19.SectionsDataProcessing/Sample Code/SectionsDataProcessingObjc/SectionsDataProcessingObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/19.SectionsDataProcessing/Sample Code/SectionsDataProcessingObjc/SectionsDataProcessingObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/19.SectionsDataProcessing/Sample Code/SectionsDataProcessingObjc/SectionsDataProcessingObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // SectionsDataProcessingObjc
4 | //
5 | // Created by Brian Slick on 1/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/19.SectionsDataProcessing/Sample Code/SectionsDataProcessingObjc/SectionsDataProcessingObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // SectionsDataProcessingObjc
4 | //
5 | // Created by Brian Slick on 1/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/19.SectionsDataProcessing/Sample Code/SectionsDataProcessingSwift/SectionsDataProcessingSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/19.SectionsDataProcessing/Sample Code/SectionsDataProcessingSwift/SectionsDataProcessingSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/19.SectionsDataProcessing/Sample Code/SectionsDataProcessingSwift/SectionsDataProcessingSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Sample Code/SectionIndexTitlesObjc/SectionIndexTitlesObjc.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Sample Code/SectionIndexTitlesObjc/SectionIndexTitlesObjc/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // SectionIndexTitlesObjc
4 | //
5 | // Created by Brian Slick on 2/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Sample Code/SectionIndexTitlesObjc/SectionIndexTitlesObjc/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Sample Code/SectionIndexTitlesObjc/SectionIndexTitlesObjc/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Sample Code/SectionIndexTitlesObjc/SectionIndexTitlesObjc/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // SectionIndexTitlesObjc
4 | //
5 | // Created by Brian Slick on 2/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Sample Code/SectionIndexTitlesObjc/SectionIndexTitlesObjc/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // SectionIndexTitlesObjc
4 | //
5 | // Created by Brian Slick on 2/21/16.
6 | // Copyright © 2016 Brian Slick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Sample Code/SectionIndexTitlesSwift/SectionIndexTitlesSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Sample Code/SectionIndexTitlesSwift/SectionIndexTitlesSwift/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Sample Code/SectionIndexTitlesSwift/SectionIndexTitlesSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/20.SectionIndexTitles/Support Files/Screenshots.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/20.SectionIndexTitles/Support Files/Screenshots.key
--------------------------------------------------------------------------------
/20.SectionIndexTitles/images/index_titles_contacts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/20.SectionIndexTitles/images/index_titles_contacts.png
--------------------------------------------------------------------------------
/20.SectionIndexTitles/images/index_titles_narrower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/20.SectionIndexTitles/images/index_titles_narrower.png
--------------------------------------------------------------------------------
/20.SectionIndexTitles/images/index_titles_too_wide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BrianSlick/Book-UITableViewGuide/d465b31ba3751bc7debb98f01be75a0d0c23d904/20.SectionIndexTitles/images/index_titles_too_wide.png
--------------------------------------------------------------------------------