diff --git a/Sources/Earthquake Network.xcodeproj/project.pbxproj b/Sources/Earthquake Network.xcodeproj/project.pbxproj index 7b685fd..0fee24c 100644 --- a/Sources/Earthquake Network.xcodeproj/project.pbxproj +++ b/Sources/Earthquake Network.xcodeproj/project.pbxproj @@ -92,6 +92,7 @@ DC4B67612517833F00634277 /* EQNSeismic.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC4B67602517833F00634277 /* EQNSeismic.swift */; }; DC52B8A224FC145500ABEBA6 /* SettingsBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DC52B8A124FC145500ABEBA6 /* SettingsBaseViewController.m */; }; DC52B8A524FCCD6900ABEBA6 /* AppTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC52B8A424FCCD6900ABEBA6 /* AppTheme.swift */; }; + DC553AF625692E37000B521B /* StoryboardInitializable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC553AF525692E37000B521B /* StoryboardInitializable.swift */; }; DC646F27252B694A000AA5FD /* AlertsSeismicNotificationExpandedTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC646F26252B694A000AA5FD /* AlertsSeismicNotificationExpandedTableViewCell.swift */; }; DC646F32252B698B000AA5FD /* AlertsSeismicNotificationCompactTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC646F31252B698B000AA5FD /* AlertsSeismicNotificationCompactTableViewCell.swift */; }; DC65B391250F243E00251693 /* SeismicSettingsNetworksViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC65B390250F243E00251693 /* SeismicSettingsNetworksViewController.swift */; }; @@ -401,6 +402,7 @@ DC52B8A024FC145500ABEBA6 /* SettingsBaseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SettingsBaseViewController.h; sourceTree = ""; }; DC52B8A124FC145500ABEBA6 /* SettingsBaseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SettingsBaseViewController.m; sourceTree = ""; }; DC52B8A424FCCD6900ABEBA6 /* AppTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppTheme.swift; sourceTree = ""; }; + DC553AF525692E37000B521B /* StoryboardInitializable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardInitializable.swift; sourceTree = ""; }; DC646F26252B694A000AA5FD /* AlertsSeismicNotificationExpandedTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertsSeismicNotificationExpandedTableViewCell.swift; sourceTree = ""; }; DC646F31252B698B000AA5FD /* AlertsSeismicNotificationCompactTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertsSeismicNotificationCompactTableViewCell.swift; sourceTree = ""; }; DC65B390250F243E00251693 /* SeismicSettingsNetworksViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeismicSettingsNetworksViewController.swift; sourceTree = ""; }; @@ -937,6 +939,7 @@ DC3ADD2F24CB1EFB00737919 /* Libs */ = { isa = PBXGroup; children = ( + DC553AF525692E37000B521B /* StoryboardInitializable.swift */, DC10563F251E7EC0002579BB /* Extensions */, 8CF66054214C566A009F4314 /* Reachability.h */, 8CF66056214C566A009F4314 /* Reachability.m */, @@ -1577,6 +1580,7 @@ 8C602246218D9DB200C799C2 /* PastquakesDettagliMappa.m in Sources */, DCEFF21A24F587E3009D3FE1 /* SettingItem.swift in Sources */, 8C8EBBA721540039002784BA /* EQNUser.m in Sources */, + DC553AF625692E37000B521B /* StoryboardInitializable.swift in Sources */, 8CADAA9421B2627D0044E256 /* LogViewController.m in Sources */, DC3BA11124D1A9C90062EE7F /* SubscriptionsViewController.swift in Sources */, DC646F27252B694A000AA5FD /* AlertsSeismicNotificationExpandedTableViewCell.swift in Sources */, diff --git a/Sources/Earthquake Network/Libs/StoryboardInitializable.swift b/Sources/Earthquake Network/Libs/StoryboardInitializable.swift new file mode 100644 index 0000000..3903b74 --- /dev/null +++ b/Sources/Earthquake Network/Libs/StoryboardInitializable.swift @@ -0,0 +1,25 @@ +// +// StoryboardInitializable.swift +// +// Created by Busi Andrea on 10/11/2020. +// + +import Foundation + + +protocol StoryboardInitializable where Self: UIViewController { + static var storyboardName: String { get } + static var storyboardControllerId: String { get } + + static func makeController() -> Self +} + +extension StoryboardInitializable { + static func makeController() -> Self { + let storyboard = UIStoryboard(name: storyboardName, bundle: Bundle(for: Self.self)) + guard let controller = storyboard.instantiateViewController(withIdentifier: storyboardControllerId) as? Self else { + fatalError("Unable to instantiate controller with anem \(storyboardControllerId)") + } + return controller + } +}