|
//
// MineViewController.swift
// Paiai_iOS
//
// Created by FFIB on 2018/12/6.
// Copyright © 2018 FFIB. All rights reserved.
//
import UIKit
import PaiaiDataKit
import PaiaiUIKit
import RxSwift
protocol MineViewControllerDelegate: class {
func didSelect(_ item: MineItem)
func logout()
}
enum MineItem {
case group
case order
case feedback
case about
}
extension MineItem: CaseIterable {
static var allClass: [MineItem] {
return [.group, .order, .feedback, .about]
}
}
final class MineViewController: SideViewController {
@IBOutlet weak var headerImageView: UIImageView!
@IBOutlet weak var nickNameLabel: UILabel!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var mineView: UIView!
override var animationView: UIView? {
return mineView
}
fileprivate lazy var menuImage: [String] = {
return ["mine-group", "mine-order", "mine-feedback", "mine-about"]
}()
fileprivate lazy var menuTitle: [String] = {
return ["我的照片群", "订单记录", "意见反馈", "关于"]
}()
var userInfoViewModel: UserInfoViewModel!
weak var delegate: MineViewControllerDelegate?
fileprivate var disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
bindingUserInfoToView()
}
@IBAction func loginOutAction(_ sender: UIButton) {
delegate?.logout()
}
}
/// binding
extension MineViewController {
func bindingUserInfoToView() {
userInfoViewModel.shareUserInfo.asObservable()
.subscribe(onNext: {[unowned self] (info) in
self.headerImageView.setImage(info.photoPath, placeholder: UIImage.defaultAvatar)
self.nickNameLabel.text = info.userName
}).disposed(by: disposeBag)
}
}
extension MineViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return menuTitle.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "mineCell", for: indexPath)
cell.textLabel?.text = menuTitle[indexPath.row]
cell.textLabel?.textColor = UIColor(gray: 51)
cell.imageView?.image = UIImage(named: menuImage[indexPath.row])
return cell
}
}
extension MineViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
delegate?.didSelect(MineItem.allCases[indexPath.row])
}
}
extension MineViewController: Storyboarded {
static func instantiate() -> MineViewController {
return UIStoryboard.mine.instantiateViewController(type: MineViewController.self)
}
}
|