diff --git a/Source/SFFocusViewLayout.swift b/Source/SFFocusViewLayout.swift index d5f59dc..a223360 100644 --- a/Source/SFFocusViewLayout.swift +++ b/Source/SFFocusViewLayout.swift @@ -126,6 +126,10 @@ public class SFFocusViewLayout: UICollectionViewLayout { private extension UICollectionViewLayout { var numberOfItems: Int { + guard collectionView?.numberOfSections() > 0 else { + return 0 + } + return collectionView!.numberOfItemsInSection(0) } diff --git a/Tests/CollectionViewController.swift b/Tests/CollectionViewController.swift index f3a093e..ae6100a 100644 --- a/Tests/CollectionViewController.swift +++ b/Tests/CollectionViewController.swift @@ -13,6 +13,8 @@ private let reuseIdentifier = "Cell" class CollectionViewController: UICollectionViewController { var items = [Int]() + + var numberOfSectionsToReturn = 1 override func viewDidLoad() { super.viewDidLoad() @@ -23,7 +25,7 @@ class CollectionViewController: UICollectionViewController { // MARK: UICollectionViewDataSource override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { - return 1 + return numberOfSectionsToReturn } diff --git a/Tests/Tests.swift b/Tests/Tests.swift index 75a8a26..e8088c5 100644 --- a/Tests/Tests.swift +++ b/Tests/Tests.swift @@ -81,5 +81,10 @@ class Tests: XCTestCase { func testLayoutShouldInvalidateLayoutForBoundsChange() { XCTAssertTrue(focusViewLayout.shouldInvalidateLayoutForBoundsChange(CGRect())) } + + func testCanPrepareLayoutForCollectionViewWithZeroSections() { + collectionViewController?.numberOfSectionsToReturn = 0 + focusViewLayout.prepareLayout() + } }