Skip to content

Latest commit

 

History

History
248 lines (176 loc) · 9.84 KB

CHANGELOG.md

File metadata and controls

248 lines (176 loc) · 9.84 KB

CHANGELOG

main branch

No pending changes to be released yet!

4.1.2

  • Update Package.swift and .podspec to use newer min iOS version supported by Xcode 12+.
    @AliSoftware #115

  • Fix Xcode 12.5 warnings about the class keyword for protocol inheritance that is deprecated.
    @johnarn #113

4.1.1

4.1.0

4.0.5

4.0.4

  • Only allowing the use of app extension API so using the library in an app extension does not produce a warning.
    @igorkulman #70

4.0.3

  • Upgrade to CircleCI 2.
    @djbe #60

  • Update project to support Swift 4.2.
    @djbe #58

4.0.2

4.0.1

  • Added a tvOS target in the Example project.
  • Carthage should now see the tvOS framework

4.0.0

Breaking changes

  • The method static func loadFromNib(owner:) of NibOwnerLoadable has been replaced by instance method func loadNibContent().
    This is more consistent as we need an instance (owner) anyway, and also avoids possible crashes when used with UIView subclasses not implementing non-required initializers init()/init(frame:). (Method static func loadFromNib() of NibLoadable is still unchanged).
    @Skoti #40
  • The storyboard property of StoryboardBased and StoryboardSceneBased protocols has been renamed to sceneStoryboard to avoid conflicts.
    @jakubgert #33

Fixes

  • Fixing documentation typos for CollectionHeaderView and MyXIBIndexSquaceCell.
    @Skoti

  • Fixing TableView Controller scene in Example project, to display cells above UITabBar.
    @Skoti

3.0.1

Bug Fixes

  • Fix instantiate() implementation on StoryboardSceneBased ViewControllers.
    @jakubgert #38
  • Removed strict NibReusable protocol conforming in register functions.
    You can now make a Reusable-only cell with a NibLoadable subclass.
    @nekrich #37

3.0.0

Breaking Changes

  • Converted library and Demo project to Swift 3.
    ⚠️ The following methods have new signatures:
    • dequeueReusableCell(indexPath:) is now dequeueReusableCell(for:)
    • dequeueReusableCell(indexPath:cellType:) is now dequeueReusableCell(for:cellType:)
    • registerReusableCell(_:) is now register(cellType:)
    • registerReusableHeaderFooterView(_:) is now register(headerFooterViewType:)
    • registerReusableSupplementaryView(_:viewType:) is now register(supplementaryViewType:ofKind:)
    • dequeueReusableSupplementaryView(_:indexPath:viewType:) is now dequeueReusableSupplementaryView(ofKind:for:viewType:)
      @phatblat #30
      @ceyhuno #31

2.5.1

2.5.0

  • Added the possibility for NibOwnerLoadable confirming custom views to pass an existing instance as owner (used as the File's Owner) in case one already exists. This is especially useful to implement init(coder:) to load the content of the XIB as subviews of self after initialization. See MyCustomWidget.swift for an example.
    @AliSoftware

2.4.0

  • Added StoryboardBased and StoryboardSceneBased protocols for storyboard based UIViewController easy instantiation.
    @AliSoftware

2.3.0

  • Added NibOwnerLoadable protocol for UIView set as XIB's File's Owner.
    @PoissonBallon #16

While the NibLoadable protocol is adapted to views loaded from XIB but that are set as the root view of the XIB, this new NibOwnerLoadable protocol is adapted to view loaded from XIB too, but that are set as the XIB's File's Owner.

2.2.1

  • Fixed issue with register… methods registering the superclass T instead of the dynamic class cellType / viewType.
    @narirou #13

2.2.0

  • Added optional viewType & cellType parameters to the dequeue functions.
    @k3zi #11

This parameter is only needed if you can't write … as MyCell (to let Swift infer the cell type from the return type), which might be the case for example when your cell class is stored in a variable:

let cellType: Any.Type = self.cellTypeForIndexPath(indexPath)
// Can't do this in this case (because cellType is a variable):
let cell = tableView.dequeueReusableCell(indexPath: indexPath) as cellType  // compiler error
// But now we can use that alternate way for such cases:
let cell = tableView.dequeueReusableCell(indexPath: indexPath, cellType: cellType)

But if you know the type at compile time, you can omit the cellType parameter and still do this, letting the return type infer it for you:

let cell = tableView.dequeueReusableCell(indexPath: indexPath) as MyCell

2.1.1

  • Made every method final to allow more optimizations.
    @AliSoftware

  • Banned the use of as! in the source code in favour of guard let x = y else { fatalError(…) }. This avoids force-casts (which are considered bad practice) and generate a more explicit fatal error in case the developer forgot something (typically forgot to set the reuseIdentifier in IB).
    @AliSoftware #6

  • Fixed bundle location of nibs. By default, nib: UINib of NibLoadable protocol will now use the nib located in the bundle of the conforming class.
    @chrisamanse #10

  • Fixed issue with subclasses of types conforming to Reusable — due to the Swift bug SR-617.
    @chrisamanse #2

2.1.0

  • Added support for direct instantiation of arbitrary UIView from a nib.
    @jakubvano #5

There is now a dedicated NibLoadable protocol which can be used on any arbitrary UIView (even non-"reusable" views) to load it from a XIB (via the loadFromNib() function injected via the protocol extension).

_The NibReusable protocol still exists for reusable cells but is now declared just as a combination of both the Reusable and NibLoadable protocols.

2.0.0

  • Fixed missing public visibility for the protocols and extensions
  • Improved README documentation

1.1.0

  • Added documentation
  • Fixed generic constraints on the API working with UICollectionView's SupplementaryView
  • Updated Example project to add an UICollectionView with cells from XIB & Code + Header views

1.0.0

  • Split protocol in two: Reusable and NibReusable
  • Now contains a Demo project

0.1.0

Initial version. Only one Reusable protocol No demo project, but has a podspec and a Package.swift