thieumao

Demo TableView

Jan 5th, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 3.91 KB | None | 0 0
  1. import UIKit
  2. import SVProgressHUD
  3.  
  4. class TopViewController: BaseViewController {
  5.    
  6.     @IBOutlet weak var eventTableView: UITableView!
  7.     var eventList = [Event]()
  8.  
  9.     override func viewDidLoad() {
  10.         super.viewDidLoad()
  11.         self.navigationTitle = LocalizationHelper.shared.localized("MY_CFN")
  12.         self.eventTableView!.register(UINib(nibName: "EventTableViewCell", bundle: nil), forCellReuseIdentifier: EventTableViewCell.identifier)
  13.         self.eventTableView.separatorStyle = .none
  14.         self.eventTableView.dataSource = self
  15.         self.eventTableView.delegate = self
  16.         self.getListEvent()
  17.     }
  18.    
  19.     override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
  20.         self.eventTableView.reloadData()
  21.     }
  22.    
  23.     func getListEvent() {
  24.         self.eventList.removeAll()
  25.         SVProgressHUD.show()
  26.         HttpClient.shared.request(method: HttpClient.METHOD.POST, api: HttpClient.API.Events, params: nil) { (json: String?, errorCode: HttpClient.ErrorCode?) in
  27.             DispatchQueue.main.async(execute: {
  28.                 SVProgressHUD.dismiss()
  29.             })
  30.             if let err = errorCode , err == HttpClient.ErrorCode.OK {
  31.                 if var response = JsonParser.parseRawToObject(json) {
  32.                     if let status = response["status"] as? Int, let statusCode = HttpClient.ErrorCode(rawValue: status) {
  33.                         switch statusCode {
  34.                         case HttpClient.ErrorCode.OK:
  35.                             if let events = response["events"] as? [Dictionary<String, Any>] {
  36.                                 for event in events {
  37.                                     if let e = Event.parse(from: event) {
  38.                                         self.eventList.append(e)
  39.                                     }
  40.                                 }
  41.                             }
  42.                             DispatchQueue.main.async {
  43.                                 self.eventTableView.reloadData()
  44.                             }
  45.                             break
  46.                         default:
  47.                             if let message = response["message"] as? String {
  48.                                 DispatchQueue.main.async {
  49.                                     ErrorHandler.shared.showError(message: message)
  50.                                 }
  51.                             }
  52.                             break
  53.                         }
  54.                     }
  55.                 }
  56.             }
  57.         }
  58.     }
  59.    
  60.     override func onUpdateLocale() {
  61.         super.onUpdateLocale()
  62.         self.getListEvent()
  63.     }
  64. }
  65.  
  66. extension TopViewController: UITableViewDelegate, UITableViewDataSource {
  67.    
  68.     func numberOfSections(in tableView: UITableView) -> Int {
  69.         return 1
  70.     }
  71.    
  72.     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  73.         return self.eventList.count
  74.     }
  75.    
  76.     func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
  77.         return 200
  78.     }
  79.    
  80.     func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  81.         return UITableViewAutomaticDimension
  82.     }
  83.    
  84.     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  85.         let cell = tableView.dequeueReusableCell(withIdentifier: EventTableViewCell.identifier) as! EventTableViewCell
  86.         cell.selectionStyle = .none
  87.         cell.showCompanyList = {(_ event: Event?) -> (Void) in
  88.             self.showCompanyList(event)
  89.         }
  90.         cell.update(with: eventList[indexPath.item])
  91.         return cell
  92.     }
  93.    
  94.     func showCompanyList(_ event: Event?) {
  95.         let companyListViewController = CompanyListViewController()
  96.         self.navigationController?.pushViewController(companyListViewController, animated: true)
  97.     }
  98. }
Add Comment
Please, Sign In to add comment