Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. protocol NibLoadable {
  2. static var nibName: String? { get }
  3. static func createFromNib(in bundle: Bundle) -> Self?
  4. }
  5.  
  6. extension NibLoadable where Self: NSView {
  7.  
  8. static var nibName: String? {
  9. return String(describing: Self.self)
  10. }
  11.  
  12. static func createFromNib(in bundle: Bundle = Bundle.main) -> Self? {
  13. guard let nibName = nibName else { return nil }
  14. var topLevelArray: NSArray? = nil
  15. bundle.loadNibNamed(NSNib.Name(nibName), owner: self, topLevelObjects: &topLevelArray)
  16. guard let results = topLevelArray else { return nil }
  17. // let views = Array<Any>(results).filter { $0 is Self }
  18. // return views.last as? Self
  19. let element = results[0] as? Self
  20.  
  21. return results[0] as? Self
  22. }
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement