Skip to content

Commit e35e561

Browse files
committed
Demote viewFromNib to MessageView class function
1 parent e5cb7cc commit e35e561

File tree

3 files changed

+20
-38
lines changed

3 files changed

+20
-38
lines changed

SwiftMessages.xcodeproj/project.pbxproj

-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
867E21731D4D01D500594A41 /* SwiftMessagesUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 867E21721D4D01D500594A41 /* SwiftMessagesUITests.swift */; };
2323
867E21831D4D025200594A41 /* MessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 867E21821D4D025200594A41 /* MessageView.swift */; };
2424
867E21851D4D044F00594A41 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 867E21841D4D044F00594A41 /* Configuration.swift */; };
25-
867E21901D4D3E5E00594A41 /* UIView+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 867E218F1D4D3E5E00594A41 /* UIView+Utils.swift */; };
2625
867E21941D4D50BB00594A41 /* Presenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 867E21931D4D50BB00594A41 /* Presenter.swift */; };
2726
86AAF8181D54F0650031EE32 /* PassthroughView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86AAF8171D54F0650031EE32 /* PassthroughView.swift */; };
2827
86AAF81A1D54F0850031EE32 /* PassthroughWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86AAF8191D54F0850031EE32 /* PassthroughWindow.swift */; };
@@ -71,7 +70,6 @@
7170
867E21741D4D01D500594A41 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
7271
867E21821D4D025200594A41 /* MessageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageView.swift; sourceTree = "<group>"; };
7372
867E21841D4D044F00594A41 /* Configuration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = "<group>"; };
74-
867E218F1D4D3E5E00594A41 /* UIView+Utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Utils.swift"; sourceTree = "<group>"; };
7573
867E21931D4D50BB00594A41 /* Presenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Presenter.swift; sourceTree = "<group>"; };
7674
86AAF8171D54F0650031EE32 /* PassthroughView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PassthroughView.swift; sourceTree = "<group>"; };
7775
86AAF8191D54F0850031EE32 /* PassthroughWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PassthroughWindow.swift; sourceTree = "<group>"; };
@@ -126,7 +124,6 @@
126124
864495551D4F7C390056EB2A /* Identifiable.swift */,
127125
86AAF81D1D5549680031EE32 /* MarginAdjustable.swift */,
128126
86AAF82A1D580DD70031EE32 /* Error.swift */,
129-
867E218F1D4D3E5E00594A41 /* UIView+Utils.swift */,
130127
);
131128
name = Base;
132129
sourceTree = "<group>";
@@ -342,7 +339,6 @@
342339
867E21941D4D50BB00594A41 /* Presenter.swift in Sources */,
343340
8644955D1D4FAF7C0056EB2A /* WindowViewController.swift in Sources */,
344341
867E21531D4D01D500594A41 /* AppDelegate.swift in Sources */,
345-
867E21901D4D3E5E00594A41 /* UIView+Utils.swift in Sources */,
346342
86AAF81E1D5549680031EE32 /* MarginAdjustable.swift in Sources */,
347343
86AAF82B1D580DD70031EE32 /* Error.swift in Sources */,
348344
86AAF81C1D551FE70031EE32 /* UIViewController+Utils.swift in Sources */,

SwiftMessages/MessageView.swift

+20-1
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,29 @@ public class MessageView: UIView, Identifiable, MarginAdjustable {
3131
case StatusLine = "StatusLine"
3232
}
3333

34-
public static func viewFromNib(layout layout: Layout, bundle: NSBundle? = nil) -> MessageView {
34+
public static func viewFromNib<T: MessageView>(layout layout: Layout, bundle: NSBundle? = nil) -> T {
3535
return try! MessageView.viewFromNib(named: layout.rawValue, bundle: bundle)
3636
}
3737

38+
public class func viewFromNib<T: MessageView>(bundle bundle: NSBundle? = nil) throws -> T {
39+
let name = description().componentsSeparatedByString(".").last
40+
assert(name != nil)
41+
let view: T = try viewFromNib(named: name!, bundle: bundle)
42+
return view
43+
}
44+
45+
public class func viewFromNib<T: MessageView>(named name: String, bundle: NSBundle? = nil) throws -> T {
46+
let resolvedBundle: NSBundle
47+
if let bundle = bundle {
48+
resolvedBundle = bundle
49+
} else {
50+
resolvedBundle = NSBundle.frameworkBundle()
51+
}
52+
guard let arrayOfViews = resolvedBundle.loadNibNamed(name, owner: self, options: nil) else { throw Error.CannotLoadNib(nibName: name) }
53+
guard let view = arrayOfViews.first as? T else { throw Error.CannotLoadViewFromNib(nibName: name) }
54+
return view
55+
}
56+
3857
/*
3958
MARK: - Configuring the theme
4059
*/

SwiftMessages/UIView+Utils.swift

-33
This file was deleted.

0 commit comments

Comments
 (0)