MTImagePickerAlbumsController.swift 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. //
  2. // MTImagePickerAlbumController.swift
  3. // MTImagePicker
  4. //
  5. // Created by Luo on 9/6/16.
  6. // Copyright © 2016 Luo. All rights reserved.
  7. //
  8. import UIKit
  9. import AssetsLibrary
  10. class MTImagePickerAlbumCell: UITableViewCell {
  11. @IBOutlet weak var lbAlbumCount: UILabel!
  12. @IBOutlet weak var lbAlbumName: UILabel!
  13. @IBOutlet weak var posterImageView: UIImageView!
  14. func setup(model: MTImagePickerAlbumModel) {
  15. self.lbAlbumCount.text = "(\(model.getAlbumCount()))"
  16. self.lbAlbumName.text = model.getAlbumName()
  17. self.posterImageView.image = model.getAlbumImage(size: self.posterImageView.frame.size)
  18. }
  19. }
  20. class MTImagePickerAlbumsController: UITableViewController {
  21. var mediaTypes: [MTImagePickerMediaType] = [MTImagePickerMediaType.Photo]
  22. var source: MTImagePickerSource = .ALAsset
  23. var maxCount: Int = Int.max
  24. weak var delegate: MTImagePickerControllerDelegate?
  25. private var dataSource = [MTImagePickerAlbumModel]()
  26. private var _source: MTImagePickerSource = .Photos
  27. class var instance: MTImagePickerAlbumsController {
  28. get {
  29. let storyboard = UIStoryboard(name: "MTImagePicker", bundle: Bundle.main)
  30. let vc = storyboard.instantiateViewController(withIdentifier: "MTImagePickerAlbumsController") as! MTImagePickerAlbumsController
  31. return vc
  32. }
  33. }
  34. override func viewDidLoad() {
  35. self.tableView.tableFooterView = UIView()
  36. MTImagePickerDataSource.fetch(type: self.source, mediaTypes: self.mediaTypes, complete: { (dataSource) in
  37. self.dataSource = dataSource
  38. self.tableView.reloadData()
  39. })
  40. }
  41. override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  42. return self.dataSource.count
  43. }
  44. override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  45. let model = self.dataSource[indexPath.row]
  46. let cell = self.tableView.dequeueReusableCell(withIdentifier: "MTImagePickerAlbumCell", for: indexPath as IndexPath)
  47. (cell as? MTImagePickerAlbumCell)?.setup(model: model)
  48. return cell
  49. }
  50. override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  51. let model = self.dataSource[indexPath.row]
  52. self.pushToMTImagePickerController(model: model, animate: true)
  53. tableView.deselectRow(at: indexPath as IndexPath, animated: true)
  54. }
  55. func pushToMTImagePickerController(model: MTImagePickerAlbumModel, animate: Bool) {
  56. let controller = MTImagePickerAssetsController.instance
  57. controller.groupModel = model
  58. controller.delegate = self.delegate
  59. controller.maxCount = self.maxCount
  60. controller.source = self.source
  61. self.navigationController?.pushViewController(controller, animated: animate)
  62. }
  63. @IBAction func btnCancelTouch(_ sender: AnyObject) {
  64. self.dismiss(animated: true, completion: nil)
  65. }
  66. }