Awesome
StoryboardBuilder
Simple dependency injection for generating views from storyboard.
Description
StoryboardBuilder
is framework to help simply and easily generating that View and ViewController are defineded in Storyboard and Xib. You can generate instance and parse type of one by using StoryboardBuilderProtocol
and XibBuilderProtocol
description.
Install
Carthage
Add following.
github "hiro-nagami/StoryboardBuilder"
How ot use
Way to get Storyboard Class
- Create storyboard file in your project.
<img src=https://raw.githubusercontent.com/hiro-nagami/resource-repo/master/StoryboardBuilder/storyboard.png alt=storyboard width=600px />
- Import StoryboardBuilder_iOS.
- Your custom view controller extends
StoryboardBuilderProtocol
. storyboardName
andstoryboardID
are implemented in that view controller.
import UIKit
import Foundation
import StoryboardBuilder_iOS
class CustomViewController: UIViewController, StoryboardBuilderProtocol {
static var storyboardName: String = "Main"
static var storyboardID: String = "CustomViewController"
...
}
You can use such as following.
/* You can generate CustomViewController just like following.
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let customeVC = storyboard.instantiateViewController(withIdentifier: "CustomViewController") as! CustomViewController
**/
let customViewController = CustomViewController.getModule()
Way to get Xib Class
- Create xib file in your project.
<img src=https://raw.githubusercontent.com/hiro-nagami/resource-repo/master/StoryboardBuilder/xib.png alt=xib width=600px />
- Import StoryboardBuilder_iOS.
- Your custom view controller extends
XibBuilderProtocol
. xibName
is implemented in that view controller.
import UIKit
import Foundation
import StoryboardBuilder_iOS
class CustomView: UIView, XibBuilderProtocol {
static var xibName: String = "CustomView"
...
}
You can use such as following.
/* You can generate CustomView just like following.
let identifier = "CustomView"
let customViewNib = UINib(nibName: identifier, bundle: nil)
let customView = customViewNib.instantiate(withOwner: self, options: nil).first as! CustomView
**/
let customView: CustomView = CustomView.getModule()
You can register and use CustomTableViewCell.
class CustomViewCell: UITableViewCell, XibBuilderProtocol {
static var xibName: String = "CustomView"
...
}
class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
self.tableView.sb.register(cellClass: CustomViewCell.self)
self.tableView.sb.register(cellClasses: [
CustomViewACell.self,
CustomViewBCell.self,
CustomViewCCell.self,
])
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.sb.dequeueReusableCell(cellClass: CustomViewBCell.self)
...
return cell
}
}
License
StoryboardBuilder is released under the MIT license. See LICENSE for details.