mirror of
https://github.com/Instagram/IGListKit
synced 2026-04-21 13:37:19 +00:00
Summary: ## Changes in this pull request Updates the IGListKit docs to the latest API spec in v5.2.0 ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/main/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/instagram/IGListKit/pull/1656 Reviewed By: jurmarcus Differential Revision: D93350284 Pulled By: TimOliver fbshipit-source-id: fa4276caae7309f3ef0fd78f5a0c4bcc05d9cb9f
1069 lines
64 KiB
HTML
1069 lines
64 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<title>Classes Reference</title>
|
||
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
|
||
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
|
||
<meta charset='utf-8'>
|
||
<script src="js/jquery.min.js" defer></script>
|
||
<script src="js/jazzy.js" defer></script>
|
||
|
||
<script src="js/lunr.min.js" defer></script>
|
||
<script src="js/typeahead.jquery.js" defer></script>
|
||
<script src="js/jazzy.search.js" defer></script>
|
||
</head>
|
||
<body>
|
||
<a name="//apple_ref/objc/Section/Classes" class="dashAnchor"></a>
|
||
<a title="Classes Reference"></a>
|
||
<header>
|
||
<div class="content-wrapper">
|
||
<p><a href="index.html">IGListKit 5.2.0 Docs</a> (96% documented)</p>
|
||
<p class="header-right"><a href="https://github.com/Instagram/IGListKit"><img src="img/gh.png" alt="GitHub"/>View on GitHub</a></p>
|
||
<div class="header-right">
|
||
<form role="search" action="search.json">
|
||
<input type="text" placeholder="Search documentation" data-typeahead>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<div class="content-wrapper">
|
||
<p id="breadcrumbs">
|
||
<a href="index.html">IGListKit</a>
|
||
<img id="carat" src="img/carat.png" alt=""/>
|
||
Classes Reference
|
||
</p>
|
||
</div>
|
||
<div class="content-wrapper">
|
||
<nav class="sidebar">
|
||
<ul class="nav-groups">
|
||
<li class="nav-group-name">
|
||
<a href="Guides.html">Guides</a>
|
||
<ul class="nav-group-tasks">
|
||
<li class="nav-group-task">
|
||
<a href="best-practices-and-faq.html">Best Practices and FAQ</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="generating-your-models-using-remodel.html">Generating your models using remodel</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="getting-started.html">Getting Started</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="iglistdiffable-and-equality.html">IGListDiffable and Equality</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="installation.html">Installation</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="migration.html">Migration</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="modeling-and-binding.html">Modeling and Binding</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="vision.html">VISION</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="working-with-core-data.html">Working with Core Data</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="working-with-uicollectionview.html">Working with UICollectionView</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="nav-group-name">
|
||
<a href="Categories.html">Categories</a>
|
||
<ul class="nav-group-tasks">
|
||
<li class="nav-group-task">
|
||
<a href="Categories/UIViewController%28IGListAdapter%29.html">UIViewController(IGListAdapter)</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="nav-group-name">
|
||
<a href="Classes.html">Classes</a>
|
||
<ul class="nav-group-tasks">
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListAdapter.html">IGListAdapter</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListAdapterDelegateAnnouncer.html">IGListAdapterDelegateAnnouncer</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListAdapterUpdater.html">IGListAdapterUpdater</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListBatchUpdateData.html">IGListBatchUpdateData</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListBindingSectionController.html">IGListBindingSectionController</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListBindingSingleSectionController.html">IGListBindingSingleSectionController</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListCollectionView.html">IGListCollectionView</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListCollectionViewLayout.html">IGListCollectionViewLayout</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListCollectionViewLayoutInvalidationContext.html">IGListCollectionViewLayoutInvalidationContext</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListGenericSectionController.html">IGListGenericSectionController</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListIndexPathResult.html">IGListIndexPathResult</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListIndexSetResult.html">IGListIndexSetResult</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListMoveIndex.html">IGListMoveIndex</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListMoveIndexPath.html">IGListMoveIndexPath</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes.html#/c:objc(cs)IGListReloadDataUpdater">IGListReloadDataUpdater</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListSectionController.html">IGListSectionController</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListSingleSectionController.html">IGListSingleSectionController</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Classes/IGListTransitionData.html">IGListTransitionData</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="nav-group-name">
|
||
<a href="Constants.html">Constants</a>
|
||
<ul class="nav-group-tasks">
|
||
<li class="nav-group-task">
|
||
<a href="Constants.html#/c:@IGListKitVersionNumber">IGListKitVersionNumber</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Constants.html#/c:@IGListKitVersionString">IGListKitVersionString</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="nav-group-name">
|
||
<a href="Enums.html">Enumerations</a>
|
||
<ul class="nav-group-tasks">
|
||
<li class="nav-group-task">
|
||
<a href="Enums/IGListAdapterUpdateType.html">IGListAdapterUpdateType</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Enums/IGListDiffOption.html">IGListDiffOption</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Enums/IGListExperiment.html">IGListExperiment</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="nav-group-name">
|
||
<a href="Protocols.html">Protocols</a>
|
||
<ul class="nav-group-tasks">
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListAdapterDataSource.html">IGListAdapterDataSource</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListAdapterDelegate.html">IGListAdapterDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListAdapterMoveDelegate.html">IGListAdapterMoveDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListAdapterPerformanceDelegate.html">IGListAdapterPerformanceDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListAdapterUpdateListener.html">IGListAdapterUpdateListener</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListAdapterUpdaterDelegate.html">IGListAdapterUpdaterDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListBatchContext.html">IGListBatchContext</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListBindable.html">IGListBindable</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListBindingSectionControllerDataSource.html">IGListBindingSectionControllerDataSource</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListBindingSectionControllerSelectionDelegate.html">IGListBindingSectionControllerSelectionDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListCollectionContext.html">IGListCollectionContext</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListCollectionViewDelegateLayout.html">IGListCollectionViewDelegateLayout</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListCollectionViewLayoutCompatible.html">IGListCollectionViewLayoutCompatible</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListDiffable.html">IGListDiffable</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListDisplayDelegate.html">IGListDisplayDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListScrollDelegate.html">IGListScrollDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListSingleSectionControllerDelegate.html">IGListSingleSectionControllerDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListSupplementaryViewSource.html">IGListSupplementaryViewSource</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListTransitionDelegate.html">IGListTransitionDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListUpdatingDelegate.html">IGListUpdatingDelegate</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Protocols/IGListWorkingRangeDelegate.html">IGListWorkingRangeDelegate</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="nav-group-name">
|
||
<a href="Type%20Definitions.html">Type Definitions</a>
|
||
<ul class="nav-group-tasks">
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions/IGListAdaptiveCoalescingExperimentConfig.html">IGListAdaptiveCoalescingExperimentConfig</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions/IGListAdaptiveDiffingExperimentConfig.html">IGListAdaptiveDiffingExperimentConfig</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions/IGListCollectionScrollingTraits.html">IGListCollectionScrollingTraits</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListUpdatingDelegate.h@T@IGListCollectionViewBlock">IGListCollectionViewBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListUpdatingDelegate.h@T@IGListDataSourceChangeBlock">IGListDataSourceChangeBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListUpdatingDelegate.h@T@IGListItemUpdateBlock">IGListItemUpdateBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListUpdatingDelegate.h@T@IGListObjectTransitionBlock">IGListObjectTransitionBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListUpdatingDelegate.h@T@IGListReloadUpdateBlock">IGListReloadUpdateBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListSingleSectionController.h@T@IGListSingleSectionCellConfigureBlock">IGListSingleSectionCellConfigureBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListSingleSectionController.h@T@IGListSingleSectionCellSizeBlock">IGListSingleSectionCellSizeBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListUpdatingDelegate.h@T@IGListToObjectBlock">IGListToObjectBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListUpdatingDelegate.h@T@IGListTransitionDataApplyBlock">IGListTransitionDataApplyBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListUpdatingDelegate.h@T@IGListTransitionDataBlock">IGListTransitionDataBlock</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListAdapter.h@T@IGListUpdaterCompletion">IGListUpdaterCompletion</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Type%20Definitions.html#/c:IGListUpdatingDelegate.h@T@IGListUpdatingCompletion">IGListUpdatingCompletion</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="nav-group-name">
|
||
<a href="Functions.html">Functions</a>
|
||
<ul class="nav-group-tasks">
|
||
<li class="nav-group-task">
|
||
<a href="Functions.html#/c:@F@IGListDiff">IGListDiff</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Functions.html#/c:@F@IGListDiffPaths">IGListDiffPaths</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Functions.html#/c:IGListExperiments.h@F@IGListExperimentEnabled">IGListExperimentEnabled</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="nav-group-name">
|
||
<a href="Structs.html">Structures</a>
|
||
<ul class="nav-group-tasks">
|
||
<li class="nav-group-task">
|
||
<a href="Structs/IGListAdaptiveCoalescingExperimentConfig.html">IGListAdaptiveCoalescingExperimentConfig</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Structs/IGListAdaptiveDiffingExperimentConfig.html">IGListAdaptiveDiffingExperimentConfig</a>
|
||
</li>
|
||
<li class="nav-group-task">
|
||
<a href="Structs/IGListCollectionScrollingTraits.html">IGListCollectionScrollingTraits</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
<article class="main-content">
|
||
<section>
|
||
<section class="section">
|
||
<h1>Classes</h1>
|
||
<p>The following classes are available globally.</p>
|
||
|
||
</section>
|
||
<section class="section task-group-section">
|
||
<div class="task-group">
|
||
<ul>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListBatchUpdateData"></a>
|
||
<a name="//apple_ref/objc/Class/IGListBatchUpdateData" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListBatchUpdateData">IGListBatchUpdateData</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>An instance of <code>IGListBatchUpdateData</code> takes section indexes and item index paths
|
||
and performs cleanup on init in order to perform a crash-free
|
||
update via <code>-[UICollectionView performBatchUpdates:completion:]</code>.</p>
|
||
|
||
<a href="Classes/IGListBatchUpdateData.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListBatchUpdateData</span> <span class="p">:</span> <span class="nc">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListBatchUpdateData</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListIndexPathResult"></a>
|
||
<a name="//apple_ref/objc/Class/IGListIndexPathResult" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListIndexPathResult">IGListIndexPathResult</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>A result object returned when diffing with sections.</p>
|
||
|
||
<a href="Classes/IGListIndexPathResult.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListIndexPathResult</span> <span class="p">:</span> <span class="nc">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListIndexPathResult</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListIndexSetResult"></a>
|
||
<a name="//apple_ref/objc/Class/IGListIndexSetResult" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListIndexSetResult">IGListIndexSetResult</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>A result object returned when diffing with indexes.</p>
|
||
|
||
<a href="Classes/IGListIndexSetResult.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListIndexSetResult</span> <span class="p">:</span> <span class="nc">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListIndexSetResult</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListMoveIndex"></a>
|
||
<a name="//apple_ref/objc/Class/IGListMoveIndex" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListMoveIndex">IGListMoveIndex</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>An object representing a move between indexes.</p>
|
||
|
||
<a href="Classes/IGListMoveIndex.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListMoveIndex</span> <span class="p">:</span> <span class="nc">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListMoveIndex</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListMoveIndexPath"></a>
|
||
<a name="//apple_ref/objc/Class/IGListMoveIndexPath" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListMoveIndexPath">IGListMoveIndexPath</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>An object representing a move between indexes.</p>
|
||
|
||
<a href="Classes/IGListMoveIndexPath.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListMoveIndexPath</span> <span class="p">:</span> <span class="nc">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListMoveIndexPath</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListAdapter"></a>
|
||
<a name="//apple_ref/objc/Class/IGListAdapter" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListAdapter">IGListAdapter</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p><code>IGListAdapter</code> objects provide an abstraction for feeds of objects in a <code>UICollectionView</code> by breaking each object
|
||
into individual sections, called “section controllers”. These controllers (objects subclassing to
|
||
<code><a href="Classes/IGListSectionController.html">IGListSectionController</a></code>) act as a data source and delegate for each section.</p>
|
||
|
||
<p>Feed implementations must act as the data source for an <code>IGListAdapter</code> in order to drive the objects and section
|
||
controllers in a collection view.</p>
|
||
|
||
<a href="Classes/IGListAdapter.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListAdapter</span> <span class="p">:</span> <span class="nc">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">@MainActor</span> <span class="kd">class</span> <span class="kt">ListAdapter</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListAdapterDelegateAnnouncer"></a>
|
||
<a name="//apple_ref/objc/Class/IGListAdapterDelegateAnnouncer" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListAdapterDelegateAnnouncer">IGListAdapterDelegateAnnouncer</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>Undocumented</p>
|
||
|
||
<a href="Classes/IGListAdapterDelegateAnnouncer.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code><span class="k">@interface</span> <span class="nc">IGListAdapterDelegateAnnouncer</span> <span class="p">:</span> <span class="nc">NSObject</span>
|
||
|
||
<span class="c1">/// Default announcer for all `IGListAdapter`</span>
|
||
<span class="k">+</span> <span class="p">(</span><span class="n">instancetype</span><span class="p">)</span><span class="n">sharedInstance</span><span class="p">;</span>
|
||
|
||
<span class="c1">/// Add a delegate that will receive callbacks for all `IGListAdapter`.</span>
|
||
<span class="c1">/// This is a weak reference, so you don't need to remove it on dealloc.</span>
|
||
<span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">addListener</span><span class="p">:(</span><span class="n">id</span><span class="o"><</span><span class="n"><a href="Protocols/IGListAdapterDelegate.html">IGListAdapterDelegate</a></span><span class="o">></span><span class="p">)</span><span class="nv">listener</span><span class="p">;</span>
|
||
|
||
<span class="c1">/// Remove delegate</span>
|
||
<span class="k">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">removeListener</span><span class="p">:(</span><span class="n">id</span><span class="o"><</span><span class="n"><a href="Protocols/IGListAdapterDelegate.html">IGListAdapterDelegate</a></span><span class="o">></span><span class="p">)</span><span class="nv">listener</span><span class="p">;</span>
|
||
|
||
<span class="k">@end</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">IGListAdapterDelegateAnnouncer</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListAdapterUpdater"></a>
|
||
<a name="//apple_ref/objc/Class/IGListAdapterUpdater" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListAdapterUpdater">IGListAdapterUpdater</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>An <code>IGListAdapterUpdater</code> is a concrete type that conforms to <code><a href="Protocols/IGListUpdatingDelegate.html">IGListUpdatingDelegate</a></code>.
|
||
It is an out-of-box updater for <code><a href="Classes/IGListAdapter.html">IGListAdapter</a></code> objects to use.</p>
|
||
<div class="aside aside-note">
|
||
<p class="aside-title">Note</p>
|
||
This updater performs re-entrant, coalesced updating for a list. It also uses a least-minimal diff
|
||
for calculating UI updates when <code><a href="Classes/IGListAdapter.html">IGListAdapter</a></code> calls
|
||
<code>-performUpdateWithCollectionView:fromObjects:toObjects:completion:</code>.
|
||
|
||
</div>
|
||
|
||
<a href="Classes/IGListAdapterUpdater.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListAdapterUpdater</span> <span class="p">:</span> <span class="nc">NSObject</span> <span class="o"><</span><span class="n"><a href="Protocols/IGListUpdatingDelegate.html">IGListUpdatingDelegate</a></span><span class="o">></span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">@MainActor</span> <span class="kd">class</span> <span class="kt">ListAdapterUpdater</span> <span class="p">:</span> <span class="kt">NSObject</span><span class="p">,</span> <span class="kt">ListUpdatingDelegate</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListBindingSectionController"></a>
|
||
<a name="//apple_ref/objc/Class/IGListBindingSectionController" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListBindingSectionController">IGListBindingSectionController</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>This section controller uses a data source to transform its “top level” object into an array of diffable view models.
|
||
It then automatically binds each view model to cells via the <code><a href="Protocols/IGListBindable.html">IGListBindable</a></code> protocol.</p>
|
||
|
||
<p>Models used with <code>IGListBindingSectionController</code> should take special care to always return <code>YES</code> for identical
|
||
objects. That is, any objects with matching <code>-diffIdentifier</code>s should always be equal, that way the section controller
|
||
can create new view models via the data source, create a diff, and update the specific cells that have changed.</p>
|
||
|
||
<p>In Objective-C, your <code>-isEqualToDiffableObject:</code> can simply be:</p>
|
||
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">BOOL</span><span class="p">)</span><span class="nf">isEqualToDiffableObject</span><span class="p">:(</span><span class="n">id</span><span class="p">)</span><span class="nv">object</span> <span class="p">{</span>
|
||
<span class="k">return</span> <span class="nb">YES</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</code></pre>
|
||
|
||
<p>In Swift:</p>
|
||
<pre class="highlight objective_c"><code><span class="n">func</span> <span class="n">isEqual</span><span class="p">(</span><span class="n">toDiffableObject</span> <span class="n">object</span><span class="o">:</span> <span class="n">IGListDiffable</span><span class="p">?)</span> <span class="o">-></span> <span class="n">Bool</span> <span class="err">{</span>
|
||
<span class="k">return</span> <span class="nb">true</span>
|
||
<span class="err">}</span>
|
||
</code></pre>
|
||
|
||
<p>Only when <code>-diffIdentifier</code>s match is object equality compared, so you can assume the class is the same, and the
|
||
instance has already been checked.</p>
|
||
|
||
<a href="Classes/IGListBindingSectionController.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListBindingSectionController</span><span class="o"><</span>
|
||
<span class="n">__covariant</span> <span class="n">ObjectType</span> <span class="o">:</span> <span class="n">id</span> <span class="o"><</span><span class="n"><a href="Protocols/IGListDiffable.html">IGListDiffable</a></span><span class="o">>></span> <span class="o">:</span> <span class="n"><a href="Classes/IGListSectionController.html">IGListSectionController</a></span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">@MainActor</span> <span class="kd">class</span> <span class="kt">ListBindingSectionController</span><span class="o"><</span><span class="kt">ObjectType</span><span class="o">></span> <span class="p">:</span> <span class="kt">ListSectionController</span> <span class="k">where</span> <span class="kt">ObjectType</span> <span class="p">:</span> <span class="kt">ListDiffable</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListBindingSingleSectionController"></a>
|
||
<a name="//apple_ref/objc/Class/IGListBindingSingleSectionController" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListBindingSingleSectionController">IGListBindingSingleSectionController</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>Special section controller that only contains a single item, and it will apply the view model update during -didUpdateObject: call, usually happened inside -[UICollectionView performBatchUpdates:completion:].</p>
|
||
|
||
<p>This class is intended to be subclassed.</p>
|
||
|
||
<a href="Classes/IGListBindingSingleSectionController.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListBindingSingleSectionController</span><span class="o"><</span>
|
||
<span class="n">__covariant</span> <span class="n">ViewModel</span> <span class="o">:</span> <span class="n">id</span> <span class="o"><</span><span class="n"><a href="Protocols/IGListDiffable.html">IGListDiffable</a></span><span class="o">></span><span class="p">,</span> <span class="n">Cell</span> <span class="o">:</span> <span class="n">UICollectionViewCell</span> <span class="o">*></span>
|
||
<span class="o">:</span> <span class="n"><a href="Classes/IGListSectionController.html">IGListSectionController</a></span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListBindingSingleSectionController</span><span class="o"><</span><span class="kt">ViewModel</span><span class="p">,</span> <span class="kt">Cell</span><span class="o">></span> <span class="p">:</span> <span class="kt">ListSectionController</span> <span class="k">where</span> <span class="kt">ViewModel</span> <span class="p">:</span> <span class="kt">ListDiffable</span><span class="p">,</span> <span class="kt">Cell</span> <span class="p">:</span> <span class="kt">UICollectionViewCell</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListCollectionView"></a>
|
||
<a name="//apple_ref/objc/Class/IGListCollectionView" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListCollectionView">IGListCollectionView</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>This <code>UICollectionView</code> subclass allows for partial layout invalidation using <code><a href="Classes/IGListCollectionViewLayout.html">IGListCollectionViewLayout</a></code>,
|
||
or custom layout classes that conform to IGListCollectionViewLayoutCompatible.</p>
|
||
<div class="aside aside-note">
|
||
<p class="aside-title">Note</p>
|
||
When updating a collection view (ex: calling <code>-insertSections</code>), <code>-invalidateLayoutWithContext</code> gets called on
|
||
the layout object. However, the invalidation context doesn’t provide details on which index paths are being modified,
|
||
which typically forces a full layout re-calculation. <code>IGListCollectionView</code> gives <code><a href="Classes/IGListCollectionViewLayout.html">IGListCollectionViewLayout</a></code> the
|
||
missing information to re-calculate only the modified layout attributes.
|
||
|
||
</div>
|
||
|
||
<a href="Classes/IGListCollectionView.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListCollectionView</span> <span class="p">:</span> <span class="nc">UICollectionView</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListCollectionView</span> <span class="p">:</span> <span class="kt">UICollectionView</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListCollectionViewLayout"></a>
|
||
<a name="//apple_ref/objc/Class/IGListCollectionViewLayout" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListCollectionViewLayout">IGListCollectionViewLayout</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>This UICollectionViewLayout subclass is for vertically or horizontally scrolling lists of data with variable widths and
|
||
heights. It supports an infinite number of sections and items. All work is done on the main thread, and while extremely efficient,
|
||
care must be taken not to stall the main thread in sizing delegate methods.</p>
|
||
|
||
<p>This layout piggybacks on the mechanics of UICollectionViewFlowLayout in that:</p>
|
||
|
||
<ul>
|
||
<li>Your UICollectionView data source must also conform to UICollectionViewDelegateFlowLayout</li>
|
||
<li>Header support given via UICollectionElementKindSectionHeader</li>
|
||
</ul>
|
||
|
||
<p>All UICollectionViewDelegateFlowLayout methods are required and used by this layout:</p>
|
||
<pre class="highlight objective_c"><code><span class="k">-</span> <span class="p">(</span><span class="n">CGSize</span><span class="p">)</span><span class="nf">collectionView</span><span class="p">:(</span><span class="n">UICollectionView</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionView</span> <span class="nf">layout</span><span class="p">:(</span><span class="n">UICollectionViewLayout</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionViewLayout</span> <span class="nf">sizeForItemAtIndexPath</span><span class="p">:(</span><span class="n">NSIndexPath</span> <span class="o">*</span><span class="p">)</span><span class="nv">indexPath</span><span class="p">;</span>
|
||
<span class="k">-</span> <span class="p">(</span><span class="n">UIEdgeInsets</span><span class="p">)</span><span class="nf">collectionView</span><span class="p">:(</span><span class="n">UICollectionView</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionView</span> <span class="nf">layout</span><span class="p">:(</span><span class="n">UICollectionViewLayout</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionViewLayout</span> <span class="nf">insetForSectionAtIndex</span><span class="p">:(</span><span class="n">NSInteger</span><span class="p">)</span><span class="nv">section</span><span class="p">;</span>
|
||
<span class="k">-</span> <span class="p">(</span><span class="n">CGFloat</span><span class="p">)</span><span class="nf">collectionView</span><span class="p">:(</span><span class="n">UICollectionView</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionView</span> <span class="nf">layout</span><span class="p">:(</span><span class="n">UICollectionViewLayout</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionViewLayout</span> <span class="nf">minimumLineSpacingForSectionAtIndex</span><span class="p">:(</span><span class="n">NSInteger</span><span class="p">)</span><span class="nv">section</span><span class="p">;</span>
|
||
<span class="k">-</span> <span class="p">(</span><span class="n">CGFloat</span><span class="p">)</span><span class="nf">collectionView</span><span class="p">:(</span><span class="n">UICollectionView</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionView</span> <span class="nf">layout</span><span class="p">:(</span><span class="n">UICollectionViewLayout</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionViewLayout</span> <span class="nf">minimumInteritemSpacingForSectionAtIndex</span><span class="p">:(</span><span class="n">NSInteger</span><span class="p">)</span><span class="nv">section</span><span class="p">;</span>
|
||
<span class="k">-</span> <span class="p">(</span><span class="n">CGSize</span><span class="p">)</span><span class="nf">collectionView</span><span class="p">:(</span><span class="n">UICollectionView</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionView</span> <span class="nf">layout</span><span class="p">:(</span><span class="n">UICollectionViewLayout</span> <span class="o">*</span><span class="p">)</span><span class="nv">collectionViewLayout</span> <span class="nf">referenceSizeForHeaderInSection</span><span class="p">:(</span><span class="n">NSInteger</span><span class="p">)</span><span class="nv">section</span><span class="p">;</span>
|
||
</code></pre>
|
||
|
||
<p>In a vertically scrolling layout, sections and items are put into the same horizontal row until the max-x position
|
||
of an item extends beyond the width of the collection view. When that happens, the item is “newlined” to the next row.
|
||
The y position of that row is determined by the maximum height (including section insets) of the section/item of the previous row.</p>
|
||
|
||
<p>Ex. of a section (2,0) with a large width causing a newline.</p>
|
||
<pre class="highlight objective_c"><code><span class="o">|</span><span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span> <span class="p">][</span> <span class="mi">1</span><span class="p">,</span><span class="mi">0</span> <span class="p">]</span> <span class="o">|</span>
|
||
<span class="o">|</span><span class="p">[</span> <span class="mi">2</span><span class="p">,</span><span class="mi">0</span> <span class="p">]</span><span class="o">|</span>
|
||
</code></pre>
|
||
|
||
<p>A section with a non-zero height header will always cause that section to newline. Headers are always stretched to the
|
||
width of the collection view, pinched with the section insets.</p>
|
||
|
||
<p>Ex. of a section (2,0) with a header inset on the left/right.</p>
|
||
<pre class="highlight objective_c"><code><span class="o">|</span><span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span> <span class="p">][</span> <span class="mi">1</span><span class="p">,</span><span class="mi">0</span> <span class="p">]</span> <span class="o">|</span>
|
||
<span class="o">|</span> <span class="o">>======</span><span class="n">header</span><span class="o">=======<</span> <span class="o">|</span>
|
||
<span class="o">|</span> <span class="p">[</span> <span class="mi">2</span><span class="p">,</span><span class="mi">0</span> <span class="p">]</span> <span class="o">|</span>
|
||
</code></pre>
|
||
|
||
<p>Section insets apply to items in the section no matter if they begin on a new row or are on the same row as a previous
|
||
section.</p>
|
||
|
||
<p>Ex. of a section (2) with multiple items and a left inset.</p>
|
||
<pre class="highlight objective_c"><code><span class="o">|</span><span class="p">[</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span> <span class="p">][</span> <span class="mi">1</span><span class="p">,</span><span class="mi">0</span> <span class="p">]</span> <span class="o">></span><span class="p">[</span> <span class="mi">2</span><span class="p">,</span><span class="mi">0</span> <span class="p">]</span><span class="o">|</span>
|
||
<span class="o">|</span> <span class="o">></span><span class="p">[</span> <span class="mi">2</span><span class="p">,</span><span class="mi">1</span> <span class="p">][</span> <span class="mi">2</span><span class="p">,</span><span class="mi">2</span> <span class="p">][</span> <span class="mi">2</span><span class="p">,</span><span class="mi">3</span> <span class="p">]</span><span class="o">|</span>
|
||
</code></pre>
|
||
|
||
<p>Interitem spacing applies to items and sections within the same row. Line spacing only applies to items within the same
|
||
section.</p>
|
||
|
||
<p>In a horizontally scrolling layout, sections and items are flowed vertically until they need to be “newlined” to the
|
||
next column. Headers, if used, are stretched to the height of the collection view, minus the section insets.</p>
|
||
|
||
<p>Please see the unit tests for more configuration examples and expected output.</p>
|
||
|
||
<a href="Classes/IGListCollectionViewLayout.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListCollectionViewLayout</span>
|
||
<span class="p">:</span> <span class="nc">UICollectionViewLayout</span> <span class="o"><</span><span class="n"><a href="Protocols/IGListCollectionViewLayoutCompatible.html">IGListCollectionViewLayoutCompatible</a></span><span class="o">></span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListCollectionViewLayout</span> <span class="p">:</span> <span class="kt">UICollectionViewLayout</span><span class="p">,</span> <span class="kt">ListCollectionViewLayoutCompatible</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListCollectionViewLayoutInvalidationContext"></a>
|
||
<a name="//apple_ref/objc/Class/IGListCollectionViewLayoutInvalidationContext" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListCollectionViewLayoutInvalidationContext">IGListCollectionViewLayoutInvalidationContext</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>The default invalidation context class used by IGListCollectionViewLayout.</p>
|
||
|
||
<a href="Classes/IGListCollectionViewLayoutInvalidationContext.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListCollectionViewLayoutInvalidationContext</span>
|
||
<span class="p">:</span> <span class="nc">UICollectionViewLayoutInvalidationContext</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListCollectionViewLayoutInvalidationContext</span> <span class="p">:</span> <span class="kt">UICollectionViewLayoutInvalidationContext</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListGenericSectionController"></a>
|
||
<a name="//apple_ref/objc/Class/IGListGenericSectionController" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListGenericSectionController">IGListGenericSectionController</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>This class adds a helper layer to <code>IGListSectionController</code> to automatically store a generic object in
|
||
<code>didUpdateToObject:</code>.</p>
|
||
|
||
<a href="Classes/IGListGenericSectionController.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListGenericSectionController</span><span class="o"><</span><span class="n">__covariant</span> <span class="n">ObjectType</span><span class="o">></span>
|
||
<span class="o">:</span> <span class="n"><a href="Classes/IGListSectionController.html">IGListSectionController</a></span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListGenericSectionController</span><span class="o"><</span><span class="kt">ObjectType</span><span class="o">></span> <span class="p">:</span> <span class="kt">ListSectionController</span> <span class="k">where</span> <span class="kt">ObjectType</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListReloadDataUpdater"></a>
|
||
<a name="//apple_ref/objc/Class/IGListReloadDataUpdater" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListReloadDataUpdater">IGListReloadDataUpdater</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>An <code>IGListReloadDataUpdater</code> is a concrete type that conforms to <code><a href="Protocols/IGListUpdatingDelegate.html">IGListUpdatingDelegate</a></code>.
|
||
It is an out-of-box updater for <code><a href="Classes/IGListAdapter.html">IGListAdapter</a></code> objects to use.</p>
|
||
<div class="aside aside-note">
|
||
<p class="aside-title">Note</p>
|
||
This updater performs simple, synchronous updates using <code>-[UICollectionView reloadData]</code>.
|
||
|
||
</div>
|
||
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListReloadDataUpdater</span> <span class="p">:</span> <span class="nc">NSObject</span> <span class="o"><</span><span class="n"><a href="Protocols/IGListUpdatingDelegate.html">IGListUpdatingDelegate</a></span><span class="o">></span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListReloadDataUpdater</span> <span class="p">:</span> <span class="kt">NSObject</span><span class="p">,</span> <span class="kt">ListUpdatingDelegate</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListSectionController"></a>
|
||
<a name="//apple_ref/objc/Class/IGListSectionController" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListSectionController">IGListSectionController</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>The base class for section controllers used in a list. This class is intended to be subclassed.</p>
|
||
|
||
<a href="Classes/IGListSectionController.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListSectionController</span> <span class="p">:</span> <span class="nc">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">@MainActor</span> <span class="kd">class</span> <span class="kt">ListSectionController</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListSingleSectionController"></a>
|
||
<a name="//apple_ref/objc/Class/IGListSingleSectionController" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListSingleSectionController">IGListSingleSectionController</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>This section controller is meant to make building simple, single-cell lists easier. By providing the type of cell, a block
|
||
to configure the cell, and a block to return the size of a cell, you can use an <code><a href="Classes/IGListAdapter.html">IGListAdapter</a></code>-powered list with a
|
||
simpler architecture.</p>
|
||
|
||
<a href="Classes/IGListSingleSectionController.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListSingleSectionController</span> <span class="p">:</span> <span class="nc"><a href="Classes/IGListSectionController.html">IGListSectionController</a></span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListSingleSectionController</span> <span class="p">:</span> <span class="kt">ListSectionController</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
<li class="item">
|
||
<div>
|
||
<code>
|
||
<a name="/c:objc(cs)IGListTransitionData"></a>
|
||
<a name="//apple_ref/objc/Class/IGListTransitionData" class="dashAnchor"></a>
|
||
<a class="token" href="#/c:objc(cs)IGListTransitionData">IGListTransitionData</a>
|
||
</code>
|
||
</div>
|
||
<div class="height-container">
|
||
<div class="pointer-container"></div>
|
||
<section class="section">
|
||
<div class="pointer"></div>
|
||
<div class="abstract">
|
||
<p>Container object that holds the data needed for an update.</p>
|
||
|
||
<a href="Classes/IGListTransitionData.html" class="slightly-smaller">See more</a>
|
||
</div>
|
||
<div class="declaration">
|
||
<h4>Declaration</h4>
|
||
<div class="language">
|
||
<p class="aside-title">Objective-C</p>
|
||
<pre class="highlight objective_c"><code>
|
||
<span class="k">@interface</span> <span class="nc">IGListTransitionData</span> <span class="p">:</span> <span class="nc">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
<div class="language">
|
||
<p class="aside-title">Swift</p>
|
||
<pre class="highlight swift"><code><span class="kd">class</span> <span class="kt">ListTransitionData</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
<section id="footer">
|
||
<p>© 2026 <a class="link" href="https://twitter.com/MetaOpenSource" target="_blank" rel="external noopener">Instagram</a>. All rights reserved. (Last updated: 2026-02-15)</p>
|
||
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.15.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
|
||
</section>
|
||
</article>
|
||
</div>
|
||
</body>
|
||
</html>
|