title: Lag issue while scrolling vertically using nested adapter | IGListKit
body: <p>I'm using <strong>IGListKit</strong> to show images <strong>vertically</strong> and <strong>horizontally</strong>. That's why I used
  <strong>nested</strong> adapter approach to have horizontally scrolling collectionViews inside a vertically scrolling collectionView.  But when having many images/items it starts to lag every time a new row is being displayed. The scrolling stops for a few milliseconds and then goes on. <br>
  I have set a level and button in vertical collection views (first adapter). Inside every vertical Collection view, I have created another adapter to show images. <br>
  Help me to solve this lagging issue. <br>
  Full project link: <a href="https://github.com/sagarthecoder/IGListKit-Dummy-Project" rel="nofollow noreferrer">https://github.com/sagarthecoder/IGListKit-Dummy-Project</a>
  <br>
  This is my partial code from ViewController.swift file <br></p>
  <pre><code>class ViewController: UIViewController {
     
      @IBOutlet weak var collectionView: UICollectionView!
      lazy var adapter : ListAdapter = {
          return ListAdapter(updater: ListAdapterUpdater(), viewController: self, workingRangeSize: 0)
      }()
  
      override func viewDidLoad() {
          super.viewDidLoad()
          adapter.collectionView = collectionView
          adapter.dataSource = self
      }
  }
  
  extension ViewController : ListAdapterDataSource {
      func objects(for listAdapter: ListAdapter) -&gt; [ListDiffable] {
          return someItems;   
      }
      
      func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -&gt; ListSectionController {
          return RootSectionController()  
      }
  }
  
  </code></pre>
  <p>This is my partial code from RootSectionController.swift file where I add another adapter <br></p>
  <pre><code>class RootSectionController: ListSectionController{
      
      var header : Header! // Items that came from ViewController
      lazy var adapter: ListAdapter = {
            let adapter = ListAdapter(updater: ListAdapterUpdater(),
                                      viewController: self.viewController)
            adapter.dataSource = self
            return adapter
        }()
  }
  
  extension RootSectionController {
  
      override func cellForItem(at index: Int) -&gt; UICollectionViewCell {
          let cell : RootCollectionViewCell = (collectionContext?.dequeueReusableCell(withNibName: &quot;RootCollectionViewCell&quot;, bundle: nil, for: self, at: index)) as! RootCollectionViewCell
          
          cell.categoryName.text = header.categoryName
          adapter.collectionView = cell.collectionView
          return cell
          
      }
      override func didUpdate(to object: Any) {
          header = object as? Header
      }
  }
  
  extension RootSectionController : ListAdapterDataSource {
      func objects(for listAdapter: ListAdapter) -&gt; [ListDiffable] {
          return someItems 
      }
      
      func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -&gt; ListSectionController {
          return UserSectionController()
      }
  }
  </code></pre>
  <p>This is my partial code from User.Swift file <br></p>
  <pre><code>class User: NSObject {
      let id : Int
      let name: String
      let imageName : String
  }
  extension User: ListDiffable {
  
      func diffIdentifier() -&gt; NSObjectProtocol {
          return id as NSObjectProtocol
      }
  
      func isEqual(toDiffableObject object: ListDiffable?) -&gt; Bool {
          if (object as? User) != nil  {
              return true
          } else {
              return false
          }
      }
  }
  </code></pre>
  <p>This is my Header.swift file <br></p>
  <pre><code>class Header: NSObject {
      let categoryName : String
  }
  
  extension Header : ListDiffable {
      func diffIdentifier() -&gt; NSObjectProtocol {
          return categoryName as NSObjectProtocol
      }
      
      func isEqual(toDiffableObject object: ListDiffable?) -&gt; Bool {
         
          if let object = object as? Header {
              return categoryName == object.categoryName
          } else {
              return false
          }
      }
  }
  </code></pre>