Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.31 KB | None | 0 0
  1. import UIKit
  2.  
  3. class SideBarViewController: UIViewController {
  4. @IBOutlet weak var menu: UIView!
  5. @IBOutlet weak var menuTableView: UITableView!
  6. var fieldImages = [UIImage]()
  7. var isFirstSectionHidden: Bool = true
  8. var isSecondSectionHidden: Bool = true
  9. var selectedIndex: Int = 0
  10. var menuTag: Int = 0
  11. var name = ""
  12. var email = ""
  13. var imageURL = ""
  14. var language = "English"
  15.  
  16. var accountNames: [String] = ["My Subscriptions", "My Proposals","My Interests"]
  17. var languageNames: [String] = ["English", "Arabic", "Malayalam"]
  18. override func viewDidLoad() {
  19. super.viewDidLoad()
  20. selectedIndex = -1
  21. self.menu.isHidden = true
  22. menuTag = 0
  23. // self.profile()
  24. let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))
  25. swipeRight.direction = UISwipeGestureRecognizerDirection.right
  26. self.view.addGestureRecognizer(swipeRight)
  27.  
  28. let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))
  29. swipeLeft.direction = UISwipeGestureRecognizerDirection.left
  30. self.view.addGestureRecognizer(swipeLeft)
  31. self.fieldImages.append(UIImage(named: "my_subscription_icon")!)
  32. self.fieldImages.append(UIImage(named: "my_proposal_icon")!)
  33. self.fieldImages.append(UIImage(named: "my_interest_icon")!)
  34. }
  35.  
  36. override func didReceiveMemoryWarning() {
  37. super.didReceiveMemoryWarning()
  38. // Dispose of any resources that can be recreated.
  39. }
  40. func respondToSwipeGesture(gesture: UIGestureRecognizer) {
  41. if let swipeGesture = gesture as? UISwipeGestureRecognizer {
  42. switch swipeGesture.direction {
  43. case UISwipeGestureRecognizerDirection.right:
  44. menuAction()
  45. print("Swiped right")
  46. case UISwipeGestureRecognizerDirection.left:
  47. menuAction()
  48. print("Swiped left")
  49. default:
  50. break
  51. }
  52. }
  53. }
  54. func menuAction() {
  55. if menuTag == 0 {
  56. UIView.animate(withDuration: 0.5, animations: {() -> Void in
  57. self.menu.frame = CGRect(x: 0, y: 0, width: self.menu.frame.size.width, height: self.menu.frame.size.height)
  58. self.menu.isHidden = false
  59. self.menuTag = 1
  60. self.menuTableView.reloadData()
  61. })
  62. }
  63. else {
  64. UIView.animate(withDuration: 0.5, animations: {() -> Void in
  65. self.menu.frame = CGRect(x: -self.menu.frame.size.width, y: 0, width: self.menu.frame.size.width, height: self.menu.frame.size.height)
  66. self.menu.isHidden = true
  67. self.menuTag = 0
  68. self.menuTableView.reloadData()
  69. })
  70. selectedIndex = -1
  71.  
  72. }
  73. }
  74. func profile() {
  75. if Utility.isConnectedToInternet {
  76. Utility.startActivityIdicator()
  77. VanpoolAPI.profile { (response) in
  78. Utility.stopActivityIndicator()
  79. if response == nil {
  80. Utility.showAlert(title: Constants.error, message: Constants.someThingWrong, delegate: self)
  81. } else {
  82. if response?.status == ResponseCode.success.code {
  83. self.name = (response?.name)!
  84. self.email = (response?.email)!
  85. self.imageURL = (response?.displayPictureUrl)!
  86. } else {
  87. Utility.showAlert(title:Constants.appName, message:response?.message?.key ?? "", delegate: self)
  88. }
  89. }
  90. }
  91. } else {
  92. Utility.showAlert(title: Constants.appName, message: Constants.noNetwork, delegate: self)
  93. }
  94. }
  95. func logout() {
  96. if Utility.isConnectedToInternet {
  97. Utility.startActivityIdicator()
  98. VanpoolAPI.logout { (response) in
  99. Utility.stopActivityIndicator()
  100. if response == nil {
  101. Utility.showAlert(title: Constants.error, message: Constants.someThingWrong, delegate: self)
  102. } else {
  103. if response?.status == ResponseCode.success.code {
  104. } else {
  105. Utility.showAlert(title:Constants.appName, message:response?.message?.key ?? "", delegate: self)
  106. }
  107. }
  108. }
  109. } else {
  110. Utility.showAlert(title: Constants.appName, message: Constants.noNetwork, delegate: self)
  111. }
  112. }
  113.  
  114. /*
  115. // MARK: - Navigation
  116.  
  117. // In a storyboard-based application, you will often want to do a little preparation before navigation
  118. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  119. // Get the new view controller using segue.destinationViewController.
  120. // Pass the selected object to the new view controller.
  121. }
  122. */
  123.  
  124. }
  125. extension SideBarViewController: UITableViewDelegate, UITableViewDataSource {
  126.  
  127. func numberOfSections(in tableView: UITableView) -> Int {
  128. return 11
  129. }
  130. // number of rows in table view
  131. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  132. if section == 0 {
  133. return 1
  134. } else if selectedIndex == section {
  135. return 3
  136. } else {
  137. return 0
  138. }
  139. }
  140. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  141. var cell = UITableViewCell()
  142. switch indexPath.section {
  143. case 0:
  144.  
  145. let cellProfile = (menuTableView.dequeueReusableCell(withIdentifier:"profileCell", for: indexPath)as? MenuTableViewCell)!
  146. cellProfile.profile.layer.masksToBounds = false
  147. cellProfile.profile.layer.cornerRadius = cellProfile.profile.frame.height/2
  148. cellProfile.profile.clipsToBounds = true
  149. cellProfile.name.text = self.name
  150. cellProfile.email.text = self.email
  151. cell = cellProfile
  152. case 3:
  153. let cellAccount = (menuTableView.dequeueReusableCell(withIdentifier:"accountCell", for: indexPath)as? MenuAccountTableViewCell)!
  154. cellAccount.title.text = accountNames[indexPath.row]
  155. cellAccount.icon.image = fieldImages[indexPath.row]
  156. cell = cellAccount
  157. case 5:
  158. let cellLanguage = (menuTableView.dequeueReusableCell(withIdentifier:"languageCell", for: indexPath)as? MenuLanguageTableViewCell)!
  159. cellLanguage.languageLabel.text = languageNames[indexPath.row]
  160. cell = cellLanguage
  161. default:
  162. print("Something else")
  163.  
  164. }
  165. return cell
  166. }
  167. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  168. switch indexPath.section {
  169. case 5:
  170. let currentCell = tableView.cellForRow(at: indexPath) as? MenuLanguageTableViewCell
  171. language = (currentCell?.languageLabel.text)!
  172. selectedIndex = -1
  173. isSecondSectionHidden = true
  174. menuTableView.reloadData()
  175. default:
  176. print("Something else")
  177. }
  178. }
  179. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  180. if indexPath.section == 0 {
  181. return 180
  182. } else if indexPath.section == 3||indexPath.section == 5 {
  183. return 40
  184. }
  185. return 0
  186. }
  187.  
  188. func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
  189. if section == 0 {
  190. return 0
  191. }
  192. return 50
  193. }
  194.  
  195. func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
  196. let headerView = UIView(frame: CGRect(x: 0, y: 0, width: menuTableView.frame.size.width, height: 40))
  197. let headerImage = UIImageView()
  198. headerImage.frame = CGRect(x: 15, y: 15, width: 12, height: 12)
  199. let headerLbl = UILabel()
  200. headerLbl.frame = CGRect(x: headerImage.frame.origin.x + headerImage.frame.size.width + 20, y: 10, width:menuTableView.frame.size.width - 40, height: 20)
  201. headerLbl.font = UIFont().robotoLight(withFontSize: 9)
  202. headerLbl.textColor = CustomColor.menuGrey.color
  203. let arrowImage = UIImageView()
  204. arrowImage.isHidden = true
  205. switch section {
  206. case 1:
  207. headerImage.image = UIImage(named: "home_icon")
  208. headerLbl.text = "Home"
  209. case 2:
  210. headerImage.image = UIImage(named: "my_Id_icon")
  211. headerLbl.text = "My ID"
  212. case 3:
  213. headerImage.image = UIImage(named: "my_interest_icon")
  214. headerLbl.text = "My Account"
  215. arrowImage.isHidden = false
  216. if isFirstSectionHidden {
  217. arrowImage.frame = CGRect(x: menuTableView.frame.size.width - 30, y: 15, width: 3, height: 5)
  218. arrowImage.image = UIImage(named: "side_arrow")
  219. } else {
  220. arrowImage.frame = CGRect(x: menuTableView.frame.size.width - 30, y: 15, width: 5, height: 3)
  221. arrowImage.image = UIImage(named: "down_arrow")
  222. }
  223. case 4:
  224. headerImage.image = UIImage(named: "my_profile_icon")
  225. headerLbl.text = "My Profile"
  226. case 5:
  227. headerImage.image = UIImage(named: "language_icon")
  228. headerLbl.text = language
  229. arrowImage.isHidden = false
  230. if isSecondSectionHidden {
  231. arrowImage.frame = CGRect(x: menuTableView.frame.size.width - 30, y: 15, width: 3, height: 5)
  232. arrowImage.image = UIImage(named: "side_arrow")
  233. } else {
  234. arrowImage.frame = CGRect(x: menuTableView.frame.size.width - 30, y: 15, width: 5, height: 3)
  235. arrowImage.image = UIImage(named: "down_arrow")
  236. }
  237.  
  238. case 6:
  239. headerImage.image = UIImage(named: "notification_icon")
  240. headerLbl.text = "Notifications"
  241. case 7:
  242. headerImage.image = UIImage(named: "about_us_icon")
  243. headerLbl.text = "About Us"
  244. case 8:
  245. headerImage.image = UIImage(named: "faq_icon")
  246. headerLbl.text = "FAQ"
  247. case 9:
  248. headerImage.image = UIImage(named: "contact_us_icon")
  249. headerLbl.text = "Contact Us"
  250. case 10:
  251. headerImage.image = UIImage(named: "logout_icon")
  252. headerLbl.text = "Logout"
  253. default:
  254. print("Something else")
  255.  
  256. }
  257. let headerClick = UIButton(type: .custom)
  258. headerClick.addTarget(self, action: #selector(self.headerAction), for: .touchUpInside)
  259. headerClick.frame = CGRect(x: 0, y: 0, width: menuTableView.frame.size.width, height: 40)
  260. headerClick.tag = section
  261. headerClick.backgroundColor = UIColor.clear
  262. headerView.addSubview(arrowImage)
  263. headerView.addSubview(headerLbl)
  264. headerView.addSubview(headerImage)
  265. headerView.addSubview(headerClick)
  266. return headerView
  267. }
  268. func headerAction(_ sender: UIButton) {
  269. if sender.tag == 3 {
  270. if isFirstSectionHidden {
  271. selectedIndex = Int(sender.tag)
  272. isFirstSectionHidden = false
  273. isSecondSectionHidden = true
  274. } else {
  275. selectedIndex = -1
  276. isFirstSectionHidden = true
  277.  
  278. }
  279. }else if sender.tag == 5 {
  280. if isSecondSectionHidden {
  281. selectedIndex = Int(sender.tag)
  282. isSecondSectionHidden = false
  283. isFirstSectionHidden = true
  284. } else {
  285. selectedIndex = -1
  286. isSecondSectionHidden = true
  287. }
  288. } else {
  289. selectedIndex = -1
  290. isSecondSectionHidden = true
  291. isFirstSectionHidden = true
  292. }
  293. menuTableView.reloadData()
  294. }
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement