From 80ffcdfa09770e1ef7087871ea2b62ec064316f1 Mon Sep 17 00:00:00 2001 From: Christian Selig Date: Fri, 3 Jan 2020 13:20:31 -0400 Subject: [PATCH] Add empty ASViewController initializer to facilitate subclassing (#1754) --- Source/ASViewController.h | 9 +++++++++ Source/ASViewController.mm | 11 +++++++++++ .../Sample/ViewController.swift | 2 +- .../Sample/OverviewViewController.swift | 2 +- examples/Swift/Sample/ViewController.swift | 2 +- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Source/ASViewController.h b/Source/ASViewController.h index 94863298d..89c02d6f9 100644 --- a/Source/ASViewController.h +++ b/Source/ASViewController.h @@ -38,6 +38,15 @@ typedef ASTraitCollection * _Nonnull (^ASDisplayTraitsForTraitWindowSizeBlock)(C */ - (instancetype)initWithNode:(DisplayNodeType)node NS_DESIGNATED_INITIALIZER; +/** +* ASViewController initializer. Useful for interoperability with normal UIViewControllers. +* +* @return An ASViewController instance with a nil node whose root view will be backed by a standard UIView as with a normal UIViewController. +* +* @see ASVisibilityDepth +*/ +- (instancetype)init NS_DESIGNATED_INITIALIZER; + NS_ASSUME_NONNULL_END /** diff --git a/Source/ASViewController.mm b/Source/ASViewController.mm index a15a2144c..6bc855666 100644 --- a/Source/ASViewController.mm +++ b/Source/ASViewController.mm @@ -64,6 +64,17 @@ - (instancetype)initWithNode:(ASDisplayNode *)node return self; } +- (instancetype)init +{ + if (!(self = [super initWithNibName:nil bundle:nil])) { + return nil; + } + + [self _initializeInstance]; + + return self; +} + - (void)_initializeInstance { if (_node == nil) { diff --git a/examples/CustomCollectionView-Swift/Sample/ViewController.swift b/examples/CustomCollectionView-Swift/Sample/ViewController.swift index 3af629079..1e33a06f3 100644 --- a/examples/CustomCollectionView-Swift/Sample/ViewController.swift +++ b/examples/CustomCollectionView-Swift/Sample/ViewController.swift @@ -17,7 +17,7 @@ class ViewController: ASViewController, MosaicCollectionViewLa let _layoutInspector = MosaicCollectionViewLayoutInspector() let kNumberOfImages: UInt = 14 - init() { + override init() { let layout = MosaicCollectionViewLayout() layout.numberOfColumns = 3; layout.headerHeight = 44; diff --git a/examples/LayoutSpecExamples-Swift/Sample/OverviewViewController.swift b/examples/LayoutSpecExamples-Swift/Sample/OverviewViewController.swift index f306a12f2..0c9110a3b 100644 --- a/examples/LayoutSpecExamples-Swift/Sample/OverviewViewController.swift +++ b/examples/LayoutSpecExamples-Swift/Sample/OverviewViewController.swift @@ -13,7 +13,7 @@ class OverviewViewController: ASViewController { let tableNode = ASTableNode() let layoutExamples: [LayoutExampleNode.Type] - init() { + override init() { layoutExamples = [ HeaderWithRightAndLeftItems.self, PhotoWithInsetTextOverlay.self, diff --git a/examples/Swift/Sample/ViewController.swift b/examples/Swift/Sample/ViewController.swift index 0c94d86ac..8384906cb 100644 --- a/examples/Swift/Sample/ViewController.swift +++ b/examples/Swift/Sample/ViewController.swift @@ -29,7 +29,7 @@ final class ViewController: ASViewController, ASTableDataSource, fileprivate(set) var state: State = .empty - init() { + override init() { super.init(node: ASTableNode()) tableNode.delegate = self tableNode.dataSource = self