| | |
| | | class ActivityDetailApplyVC: BaseVC { |
| | | |
| | | |
| | | @IBOutlet weak var view_banner: UIView! |
| | | @IBOutlet weak var label_storeNames: UILabel! |
| | | @IBOutlet weak var label_title: UILabel! |
| | | @IBOutlet weak var label_joinCondition: UILabel! |
| | | @IBOutlet weak var label_address: UILabel! |
| | | @IBOutlet weak var label_duetime: UILabel! |
| | | @IBOutlet weak var label_starttime: UILabel! |
| | | @IBOutlet weak var label_endtime: UILabel! |
| | | @IBOutlet weak var label_ageScope: UILabel! |
| | | @IBOutlet weak var label_city: UILabel! |
| | | @IBOutlet weak var label_money: UILabel! |
| | | @IBOutlet weak var label_coin: UILabel! |
| | | @IBOutlet weak var label_courseNum: UILabel! |
| | | @IBOutlet weak var label_introducion: UILabel! |
| | | @IBOutlet weak var btn_enroll: UIButton! |
| | | @IBOutlet weak var tableView: UITableView! |
| | | @IBOutlet weak var btn_addStudent: QMUIButton! |
| | | @IBOutlet weak var cons_tableHei: NSLayoutConstraint! |
| | | @IBOutlet weak var label_matchStore: UILabel! |
| | | @IBOutlet weak var btn_moreMatchStore: UIButton! |
| | | @IBOutlet weak var view_banner: UIView! |
| | | @IBOutlet weak var label_storeNames: UILabel! |
| | | @IBOutlet weak var label_title: UILabel! |
| | | @IBOutlet weak var label_joinCondition: UILabel! |
| | | @IBOutlet weak var label_address: UILabel! |
| | | @IBOutlet weak var label_duetime: UILabel! |
| | | @IBOutlet weak var label_starttime: UILabel! |
| | | @IBOutlet weak var label_endtime: UILabel! |
| | | @IBOutlet weak var label_ageScope: UILabel! |
| | | @IBOutlet weak var label_city: UILabel! |
| | | @IBOutlet weak var label_money: UILabel! |
| | | @IBOutlet weak var label_coin: UILabel! |
| | | @IBOutlet weak var label_courseNum: UILabel! |
| | | @IBOutlet weak var label_introducion: UILabel! |
| | | @IBOutlet weak var btn_enroll: UIButton! |
| | | @IBOutlet weak var tableView: UITableView! |
| | | @IBOutlet weak var btn_addStudent: QMUIButton! |
| | | @IBOutlet weak var cons_tableHei: NSLayoutConstraint! |
| | | @IBOutlet weak var label_matchStore: UILabel! |
| | | @IBOutlet weak var btn_moreMatchStore: UIButton! |
| | | |
| | | @IBOutlet weak var view_money: UIView! |
| | | @IBOutlet weak var view_coin: UIView! |
| | | @IBOutlet weak var view_courseNum: UIView! |
| | | @IBOutlet weak var view_money: UIView! |
| | | @IBOutlet weak var view_coin: UIView! |
| | | @IBOutlet weak var view_courseNum: UIView! |
| | | |
| | | private lazy var bannerView:CommonBannerView = { |
| | | let v = CommonBannerView() |
| | | return v |
| | | }() |
| | | private lazy var bannerView:CommonBannerView = { |
| | | let v = CommonBannerView() |
| | | return v |
| | | }() |
| | | |
| | | var activityDetailModel:ActivityDetailModel! |
| | | private var students = [ActivityDetailPartModel]() |
| | | var activityDetailModel:ActivityDetailModel! |
| | | private var students = [ActivityDetailPartModel]() |
| | | |
| | | required init(model:ActivityDetailModel) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.activityDetailModel = model |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | |
| | | |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "活动详情" |
| | | |
| | | label_storeNames.text = activityDetailModel.storeInfos.map({$0.name}).joined(separator: ",") |
| | | btn_moreMatchStore.isHidden = (label_storeNames.text?.count ?? 0) < 50 |
| | | |
| | | label_title.text = activityDetailModel.name |
| | | label_joinCondition.text = activityDetailModel.registerCondition.strTitle + "参与" |
| | | label_address.text = activityDetailModel.address |
| | | label_duetime.text = activityDetailModel.registerEndTime |
| | | label_starttime.text = activityDetailModel.startTime |
| | | label_endtime.text = activityDetailModel.endTime |
| | | label_ageScope.text = activityDetailModel.age + "岁" |
| | | label_introducion.text = activityDetailModel.introduction |
| | | label_city.isHidden = activityDetailModel.province.isEmpty || activityDetailModel.city.isEmpty |
| | | label_city.text = activityDetailModel.province + "|" + activityDetailModel.city |
| | | label_money.text = String(format: "%@/人", activityDetailModel.cashPrice.currency()) |
| | | label_coin.text = String(format: "%ld币/人", activityDetailModel.playPaiCoin) |
| | | label_courseNum.text = String(format: "%ld课时/人", activityDetailModel.classPrice) |
| | | |
| | | view_money.isHidden = activityDetailModel.cashPrice == 0 |
| | | view_courseNum.isHidden = activityDetailModel.classPrice == 0 |
| | | view_coin.isHidden = activityDetailModel.playPaiCoin == 0 |
| | | |
| | | students.append(contentsOf: activityDetailModel.participant) |
| | | cons_tableHei.constant = Double(students.count) * 100 |
| | | tableView.reloadData() |
| | | |
| | | let imgs = activityDetailModel.imgs.components(separatedBy: ",") |
| | | var items = [CommonBannerModel]() |
| | | for (index,img) in imgs.enumerated(){ |
| | | items.append(CommonBannerModel(index: index,resource: img,mediaType: .imageUrl)) |
| | | } |
| | | bannerView.setItems(items: items) |
| | | } |
| | | |
| | | override func setUI() { |
| | | btn_addStudent.imagePosition = .right |
| | | btn_addStudent.spacingBetweenImageAndTitle = 4 |
| | | tableView.delegate = self |
| | | tableView.dataSource = self |
| | | tableView.separatorStyle = .none |
| | | tableView.register(UINib(nibName: "StudentInfo_2_TCell", bundle: nil), forCellReuseIdentifier: "_StudentInfo_2_TCell") |
| | | |
| | | view_banner.addSubview(bannerView) |
| | | bannerView.frame = CGRect(x: 0, y: 0, width: JQ_ScreenW, height: JQ_ScreenW * 0.56) |
| | | |
| | | let moreBtnAttributeding = AttributedStringbuilder.build().add(string: "查看更多", withFont: UIFont.systemFont(ofSize: 12, weight: .medium), withColor: Def_ThemeColor).underLine(color: Def_ThemeColor).mutableAttributedString |
| | | btn_moreMatchStore.setAttributedTitle(moreBtnAttributeding, for: .normal) |
| | | } |
| | | |
| | | @IBAction func matchStoreAction(_ sender: UIButton) { |
| | | let text = activityDetailModel.storeInfos.map({$0.name}).joined(separator: ",") |
| | | AgreentView.show(type: .matchStore, content: text) |
| | | } |
| | | |
| | | @IBAction func addStudentAction(_ sender: QMUIButton) { |
| | | StudentChooseView.show(itemType: .activity, defaultStu: students,isAuth: activityDetailModel.isReal) { [weak self] studs in |
| | | self?.students = studs as! [ActivityDetailPartModel] |
| | | self?.cons_tableHei.constant = Double(self?.students.count ?? 0) * 100 |
| | | self?.tableView.reloadData() |
| | | } needAddClouse: {[weak self] () in |
| | | let vc = ActivityStudentListVC() |
| | | self?.push(vc: vc) |
| | | } |
| | | } |
| | | |
| | | @IBAction func applyAction(_ sender: UIButton) { |
| | | |
| | | guard students.count != 0 else { |
| | | alertError(msg: "请至少选择一位活动人员");return |
| | | } |
| | | |
| | | |
| | | if activityDetailModel.storeInfos.count > 1{ |
| | | let a = activityDetailModel.storeInfos.map({$0.name}) |
| | | StoresInfo_2_View.show(a) {[weak self] status in |
| | | guard let weakSelf = self else { return } |
| | | |
| | | let price = weakSelf.activityDetailModel.cashPrice * Double(weakSelf.students.count) |
| | | let coin = weakSelf.activityDetailModel.playPaiCoin * weakSelf.students.count |
| | | let course = weakSelf.activityDetailModel.classPrice * weakSelf.students.count |
| | | |
| | | if status{ |
| | | let isStudent = weakSelf.students.filter({$0.isStudent == 0}).count > 0 ? true:false |
| | | //零元购 |
| | | if price == 0 && coin == 0 && course == 0{ |
| | | weakSelf.payment(type: .coin,paymentId: 0) |
| | | return |
| | | } |
| | | |
| | | PaymentView.show(enumType: .activity, money: (ali:price,wx:price,coin:coin,course:course,integral:nil),hasNotStudent: isStudent) { [weak self] type in |
| | | guard let weakSelf = self else { return } |
| | | if type == .courseNum{ |
| | | PaymentCourseView.show(id: weakSelf.activityDetailModel.id,number:course) { id in |
| | | weakSelf.payment(type: type,paymentId: id) |
| | | } |
| | | }else{ |
| | | weakSelf.payment(type: type) |
| | | } |
| | | } |
| | | }else{ |
| | | weakSelf.navigationController?.qmui_popToRootViewController(animated: true, completion: { |
| | | NotificationCenter.default.post(name: ChooseHomeStore_Noti, object: nil) |
| | | }) |
| | | required init(model:ActivityDetailModel) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.activityDetailModel = model |
| | | } |
| | | } |
| | | }else{ |
| | | StoresInfoView.show(activityDetailModel.storeInfos.first!) { [weak self] status in |
| | | guard let weakSelf = self else { return } |
| | | |
| | | let price = weakSelf.activityDetailModel.cashPrice * Double(weakSelf.students.count) |
| | | let coin = weakSelf.activityDetailModel.playPaiCoin * weakSelf.students.count |
| | | let course = weakSelf.activityDetailModel.classPrice * weakSelf.students.count |
| | | |
| | | if status{ |
| | | //零元购 |
| | | if price == 0 && coin == 0 && course == 0{ |
| | | weakSelf.payment(type: .coin,paymentId: 0) |
| | | return |
| | | } |
| | | |
| | | let isStudent = weakSelf.students.filter({$0.isStudent == 0}).count > 0 ? true:false |
| | | PaymentView.show(enumType: .activity, money: (ali:price,wx:price,coin:coin,course:course,integral:nil),hasNotStudent: isStudent) { [weak self] type in |
| | | guard let weakSelf = self else { return } |
| | | if type == .courseNum{ |
| | | PaymentCourseView.show(id: weakSelf.activityDetailModel.id,number:course) { id in |
| | | weakSelf.payment(type: type,paymentId: id) |
| | | } |
| | | }else{ |
| | | weakSelf.payment(type: type) |
| | | } |
| | | } |
| | | }else{ |
| | | weakSelf.navigationController?.qmui_popToRootViewController(animated: true, completion: { |
| | | NotificationCenter.default.post(name: ChooseHomeStore_Noti, object: nil) |
| | | }) |
| | | required init?(coder: NSCoder) { |
| | | fatalError("init(coder:) has not been implemented") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private func payment(type:PayType,paymentId:Int? = nil){ |
| | | let ids = students.map({"\($0.id)"}).joined(separator: ";") |
| | | Services.paymentCompetition(id: activityDetailModel.id, userIds: ids, payType: type,coursePaymentId: paymentId).subscribe(onNext: {[weak self] data in |
| | | NotificationCenter.default.post(name: StudentRefresh_Nofi, object: nil) |
| | | if let m = data.data{ |
| | | switch type { |
| | | case .aliPay: |
| | | let req = YYAlipayRequest(orderString: m.orderString) |
| | | YYPaymentManager.shared.sendPaymentRequest(req) { result in |
| | | switch result { |
| | | case .success: |
| | | let vc = PaymentResultVC(result: .success, objType: .activityApply) |
| | | self?.push(vc: vc) |
| | | case .cancel: |
| | | alert(msg: "已取消") |
| | | case .failure(_): |
| | | let vc = PaymentResultVC(result: .fail("支付失败",0), objType: .activityApply) |
| | | self?.push(vc: vc) |
| | | } |
| | | } |
| | | case .wechat:break |
| | | case .coin,.free: |
| | | let vc = PaymentResultVC(result: .success, objType: .activityApply) |
| | | self?.push(vc: vc) |
| | | case .courseNum: |
| | | let vc = PaymentResultVC(result: .success, objType: .activityApply) |
| | | self?.push(vc: vc) |
| | | default:break |
| | | |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "活动详情" |
| | | |
| | | label_storeNames.text = activityDetailModel.storeInfos.map({$0.name}).joined(separator: ",") |
| | | btn_moreMatchStore.isHidden = (label_storeNames.text?.count ?? 0) < 50 |
| | | |
| | | label_title.text = activityDetailModel.name |
| | | label_joinCondition.text = activityDetailModel.registerCondition.strTitle + "参与" |
| | | label_address.text = activityDetailModel.address |
| | | label_duetime.text = activityDetailModel.registerEndTime |
| | | label_starttime.text = activityDetailModel.startTime |
| | | label_endtime.text = activityDetailModel.endTime |
| | | label_ageScope.text = activityDetailModel.age + "岁" |
| | | label_introducion.text = activityDetailModel.introduction |
| | | label_city.isHidden = activityDetailModel.province.isEmpty || activityDetailModel.city.isEmpty |
| | | label_city.text = activityDetailModel.province + "|" + activityDetailModel.city |
| | | label_money.text = String(format: "%@/人", activityDetailModel.cashPrice.currency()) |
| | | label_coin.text = String(format: "%ld币/人", activityDetailModel.playPaiCoin) |
| | | label_courseNum.text = String(format: "%ld课时/人", activityDetailModel.classPrice) |
| | | |
| | | view_money.isHidden = activityDetailModel.cashPrice == 0 |
| | | view_courseNum.isHidden = activityDetailModel.classPrice == 0 |
| | | view_coin.isHidden = activityDetailModel.playPaiCoin == 0 |
| | | |
| | | students.append(contentsOf: activityDetailModel.participant) |
| | | cons_tableHei.constant = Double(students.count) * 100 |
| | | tableView.reloadData() |
| | | |
| | | let imgs = activityDetailModel.imgs.components(separatedBy: ",") |
| | | var items = [CommonBannerModel]() |
| | | for (index,img) in imgs.enumerated(){ |
| | | items.append(CommonBannerModel(index: index,resource: img,mediaType: .imageUrl)) |
| | | } |
| | | bannerView.setItems(items: items) |
| | | } |
| | | } |
| | | },onError: {[weak self] error in |
| | | if let er = error as? NetworkRequest.NetRequestError{ |
| | | switch er { |
| | | case .Other(let code,let string): |
| | | let vc = PaymentResultVC(result: .fail(string,code), objType: .yard,handleVC: nil) |
| | | self?.push(vc: vc) |
| | | default: |
| | | let vc = PaymentResultVC(result: .fail("支付失败",0), objType: .yard,handleVC: nil) |
| | | self?.push(vc: vc) |
| | | |
| | | override func setUI() { |
| | | btn_addStudent.imagePosition = .right |
| | | btn_addStudent.spacingBetweenImageAndTitle = 4 |
| | | tableView.delegate = self |
| | | tableView.dataSource = self |
| | | tableView.separatorStyle = .none |
| | | tableView.register(UINib(nibName: "StudentInfo_2_TCell", bundle: nil), forCellReuseIdentifier: "_StudentInfo_2_TCell") |
| | | |
| | | view_banner.addSubview(bannerView) |
| | | bannerView.frame = CGRect(x: 0, y: 0, width: JQ_ScreenW, height: JQ_ScreenW * 0.56) |
| | | |
| | | let moreBtnAttributeding = AttributedStringbuilder.build().add(string: "查看更多", withFont: UIFont.systemFont(ofSize: 12, weight: .medium), withColor: Def_ThemeColor).underLine(color: Def_ThemeColor).mutableAttributedString |
| | | btn_moreMatchStore.setAttributedTitle(moreBtnAttributeding, for: .normal) |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | @IBAction func matchStoreAction(_ sender: UIButton) { |
| | | let text = activityDetailModel.storeInfos.map({$0.name}).joined(separator: ",") |
| | | AgreentView.show(type: .matchStore, content: text) |
| | | } |
| | | |
| | | @IBAction func addStudentAction(_ sender: QMUIButton) { |
| | | StudentChooseView.show(itemType: .activity, defaultStu: students,isAuth: activityDetailModel.isReal) { [weak self] studs in |
| | | self?.students = studs as! [ActivityDetailPartModel] |
| | | self?.cons_tableHei.constant = Double(self?.students.count ?? 0) * 100 |
| | | self?.tableView.reloadData() |
| | | } needAddClouse: {[weak self] () in |
| | | let vc = ActivityStudentListVC() |
| | | self?.push(vc: vc) |
| | | } |
| | | } |
| | | |
| | | @IBAction func applyAction(_ sender: UIButton) { |
| | | |
| | | guard students.count != 0 else { |
| | | alertError(msg: "请至少选择一位活动人员");return |
| | | } |
| | | |
| | | |
| | | if activityDetailModel.storeInfos.count > 1{ |
| | | let a = activityDetailModel.storeInfos.map({$0.name}) |
| | | StoresInfo_2_View.show(a) {[weak self] status in |
| | | guard let weakSelf = self else { return } |
| | | |
| | | let price = weakSelf.activityDetailModel.cashPrice * Double(weakSelf.students.count) |
| | | let coin = weakSelf.activityDetailModel.playPaiCoin * weakSelf.students.count |
| | | let course = weakSelf.activityDetailModel.classPrice * weakSelf.students.count |
| | | |
| | | if status{ |
| | | let isStudent = weakSelf.students.filter({$0.isStudent == 0}).count > 0 ? true:false |
| | | //零元购 |
| | | if price == 0 && coin == 0 && course == 0{ |
| | | weakSelf.payment(type: .coin,paymentId: 0) |
| | | return |
| | | } |
| | | |
| | | PaymentView.show(enumType: .activity, money: (ali:price,wx:price,coin:coin,course:course,integral:nil),hasNotStudent: isStudent) { [weak self] type in |
| | | guard let weakSelf = self else { return } |
| | | if type == .courseNum{ |
| | | PaymentCourseView.show(id: weakSelf.activityDetailModel.id,number:course) { id in |
| | | weakSelf.payment(type: type,paymentId: id) |
| | | } |
| | | }else{ |
| | | weakSelf.payment(type: type) |
| | | } |
| | | } |
| | | }else{ |
| | | weakSelf.navigationController?.qmui_popToRootViewController(animated: true, completion: { |
| | | NotificationCenter.default.post(name: ChooseHomeStore_Noti, object: nil) |
| | | }) |
| | | } |
| | | } |
| | | }else{ |
| | | StoresInfoView.show(activityDetailModel.storeInfos.first!) { [weak self] status in |
| | | guard let weakSelf = self else { return } |
| | | |
| | | let price = weakSelf.activityDetailModel.cashPrice * Double(weakSelf.students.count) |
| | | let coin = weakSelf.activityDetailModel.playPaiCoin * weakSelf.students.count |
| | | let course = weakSelf.activityDetailModel.classPrice * weakSelf.students.count |
| | | |
| | | if status{ |
| | | //零元购 |
| | | if price == 0 && coin == 0 && course == 0{ |
| | | weakSelf.payment(type: .coin,paymentId: 0) |
| | | return |
| | | } |
| | | |
| | | let isStudent = weakSelf.students.filter({$0.isStudent == 0}).count > 0 ? true:false |
| | | PaymentView.show(enumType: .activity, money: (ali:price,wx:price,coin:coin,course:course,integral:nil),hasNotStudent: isStudent) { [weak self] type in |
| | | guard let weakSelf = self else { return } |
| | | if type == .courseNum{ |
| | | PaymentCourseView.show(id: weakSelf.activityDetailModel.id,number:course) { id in |
| | | weakSelf.payment(type: type,paymentId: id) |
| | | } |
| | | }else{ |
| | | weakSelf.payment(type: type) |
| | | } |
| | | } |
| | | }else{ |
| | | weakSelf.navigationController?.qmui_popToRootViewController(animated: true, completion: { |
| | | NotificationCenter.default.post(name: ChooseHomeStore_Noti, object: nil) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private func payment(type:PayType,paymentId:Int? = nil){ |
| | | let ids = students.map({"\($0.id)"}).joined(separator: ";") |
| | | Services.paymentCompetition(id: activityDetailModel.id, userIds: ids, payType: type,coursePaymentId: paymentId).subscribe(onNext: {[weak self] data in |
| | | NotificationCenter.default.post(name: StudentRefresh_Nofi, object: nil) |
| | | if let m = data.data{ |
| | | switch type { |
| | | case .aliPay: |
| | | let req = YYAlipayRequest(orderString: m.orderString) |
| | | YYPaymentManager.shared.sendPaymentRequest(req) { result in |
| | | switch result { |
| | | case .success: |
| | | let vc = PaymentResultVC(result: .success, objType: .activityApply) |
| | | self?.push(vc: vc) |
| | | case .cancel: |
| | | alert(msg: "已取消") |
| | | case .failure(_): |
| | | let vc = PaymentResultVC(result: .fail("支付失败",0), objType: .activityApply) |
| | | self?.push(vc: vc) |
| | | } |
| | | } |
| | | case .wechat:break |
| | | case .coin,.free: |
| | | let vc = PaymentResultVC(result: .success, objType: .activityApply) |
| | | self?.push(vc: vc) |
| | | case .courseNum: |
| | | let vc = PaymentResultVC(result: .success, objType: .activityApply) |
| | | self?.push(vc: vc) |
| | | default:break |
| | | } |
| | | } |
| | | },onError: {[weak self] error in |
| | | if let er = error as? NetworkRequest.NetRequestError{ |
| | | switch er { |
| | | case .Other(let code,let string): |
| | | let vc = PaymentResultVC(result: .fail(string,code), objType: .yard,handleVC: nil) |
| | | self?.push(vc: vc) |
| | | default: |
| | | let vc = PaymentResultVC(result: .fail("支付失败",0), objType: .yard,handleVC: nil) |
| | | self?.push(vc: vc) |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | } |
| | | |
| | | extension ActivityDetailApplyVC:UITableViewDelegate{ |
| | | |
| | | |
| | | } |
| | | |
| | | extension ActivityDetailApplyVC:UITableViewDataSource{ |
| | | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| | | let student = students[indexPath.row] |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_StudentInfo_2_TCell") as! StudentInfo_2_TCell |
| | | cell.indexPath = indexPath |
| | | cell.activityDetailPartModel = student |
| | | cell.btn_edit.isHidden = true |
| | | cell.img_radio.isHidden = true |
| | | cell.delClouse = {[weak self] index in |
| | | tableView.beginUpdates() |
| | | self?.students.remove(at: index.row) |
| | | tableView.deleteItemsAtIndexPaths([index], animationStyle: .automatic) |
| | | tableView.endUpdates() |
| | | tableView.reloadData() |
| | | self?.cons_tableHei.constant = Double(self?.students.count ?? 0) * 100 |
| | | } |
| | | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| | | let student = students[indexPath.row] |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_StudentInfo_2_TCell") as! StudentInfo_2_TCell |
| | | cell.indexPath = indexPath |
| | | cell.activityDetailPartModel = student |
| | | cell.btn_edit.isHidden = true |
| | | cell.img_radio.isHidden = true |
| | | cell.delClouse = {[weak self] index in |
| | | tableView.beginUpdates() |
| | | self?.students.remove(at: index.row) |
| | | tableView.deleteItemsAtIndexPaths([index], animationStyle: .automatic) |
| | | tableView.endUpdates() |
| | | tableView.reloadData() |
| | | self?.cons_tableHei.constant = Double(self?.students.count ?? 0) * 100 |
| | | } |
| | | |
| | | return cell |
| | | } |
| | | |
| | | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
| | | return students.count |
| | | } |
| | | return cell |
| | | } |
| | | |
| | | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
| | | return students.count |
| | | } |
| | | } |