Repository navigation
Expand file tree
/
Copy pathEventListViewController.swift
More file actions
63 lines (52 loc) · 2.04 KB
/
Copy pathEventListViewController.swift
File metadata and controls
63 lines (52 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//
// Copyright © 2014 Yuri Kotov
//
import UIKit
class EventListViewController: UITableViewController, EventContext {
var events: Event[] = []
weak var request: Cancelable?
@lazy
var dateFormatter = NSDateFormatter(format: "dd/MM/yy")
func reloadData() {
request?.cancel()
// TODO: Replace 'weak' with 'unowned' when it stop crashing
request = Event.listEvents({[weak self] result in
switch result {
case .Success(let events):
self!.events = events
self!.tableView.reloadData()
self!.refreshControl?.endRefreshing()
case .Failure(let error):
println(error)
}
})
}
override func viewDidLoad() {
super.viewDidLoad()
reloadData()
// TODO: Set this in Interface Builder when possible
refreshControl.addTarget(self, action: "reloadData", forControlEvents: UIControlEvents.ValueChanged)
}
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return events.count
}
// TODO: Extract into generic data source
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell = tableView.dequeueReusableCellWithIdentifier("EventListCell", forIndexPath: indexPath) as EventListCell
cell.setEvent(events[indexPath.row], withContext:self)
return cell
}
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
switch segue.identifier! {
case "buy":
prepareForPurchase(segue.destinationViewController)
default:
super.prepareForSegue(segue, sender: sender)
}
}
func prepareForPurchase(destination: AnyObject!) {
let indexPath = tableView.indexPathForSelectedRow()
let presenter = destination as EventPresenter
presenter.setEvent(events[indexPath.row], withContext:self)
}
}