Skip to content

Instantly share code, notes, and snippets.

@acrookston
Created October 25, 2016 20:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save acrookston/179484cf939d491369891d6274911d9a to your computer and use it in GitHub Desktop.
Save acrookston/179484cf939d491369891d6274911d9a to your computer and use it in GitHub Desktop.
class NavBarItem {
typealias Callback = (() -> ())
var title : String
var selected: Bool
var callback: Callback
init(title: String, selected: Bool, callback: @escaping Callback) {
self.title = title
self.selected = selected
self.callback = callback
}
}
class NavBarButton : UIButton {
var item : NavBarItem?
}
class NavBarView : UIView {
var items = [NavBarItem]()
func add(item: NavBarItem) {
items.append(item)
}
override func layoutSubviews() {
super.layoutSubviews()
for item in items {
// setup the buttons properly
let button = NavBarButton(frame: CGRect.zero)
button.item = item
button.addTarget(self, action: #selector(buttonTapped(sender:)), for: UIControlEvents.touchUpInside)
}
}
func buttonTapped(sender: NavBarButton) {
sender.item?.callback()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment