Commit be23db7b authored by Steven杜宇's avatar Steven杜宇

// 学位类型

parent 87b5cc37
......@@ -39,6 +39,8 @@
044CC6252B873F330083FF76 /* YHCollegeSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC6242B873F330083FF76 /* YHCollegeSearchViewController.swift */; };
044CC6272B8740340083FF76 /* YHCollegeNameCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC6262B8740340083FF76 /* YHCollegeNameCell.swift */; };
044CC6292B8741AC0083FF76 /* YHSearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC6282B8741AC0083FF76 /* YHSearchBar.swift */; };
044CC62B2B876A230083FF76 /* YHSheetPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC62A2B876A230083FF76 /* YHSheetPickerView.swift */; };
044CC62D2B876C980083FF76 /* YHSheetPickerViewType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CC62C2B876C980083FF76 /* YHSheetPickerViewType.swift */; };
0468D4202B49320900CFB916 /* YHVerificationCodeLoginController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D41F2B49320900CFB916 /* YHVerificationCodeLoginController.swift */; };
0468D4222B493A5E00CFB916 /* YHPhoneMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D4212B493A5E00CFB916 /* YHPhoneMessageView.swift */; };
0468D4242B494BEA00CFB916 /* YHCodeResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0468D4232B494BEA00CFB916 /* YHCodeResultViewController.swift */; };
......@@ -323,6 +325,8 @@
044CC6242B873F330083FF76 /* YHCollegeSearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCollegeSearchViewController.swift; sourceTree = "<group>"; };
044CC6262B8740340083FF76 /* YHCollegeNameCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCollegeNameCell.swift; sourceTree = "<group>"; };
044CC6282B8741AC0083FF76 /* YHSearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSearchBar.swift; sourceTree = "<group>"; };
044CC62A2B876A230083FF76 /* YHSheetPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSheetPickerView.swift; sourceTree = "<group>"; };
044CC62C2B876C980083FF76 /* YHSheetPickerViewType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSheetPickerViewType.swift; sourceTree = "<group>"; };
0468D41F2B49320900CFB916 /* YHVerificationCodeLoginController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHVerificationCodeLoginController.swift; sourceTree = "<group>"; };
0468D4212B493A5E00CFB916 /* YHPhoneMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPhoneMessageView.swift; sourceTree = "<group>"; };
0468D4232B494BEA00CFB916 /* YHCodeResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCodeResultViewController.swift; sourceTree = "<group>"; };
......@@ -660,6 +664,8 @@
042FBBD22B67A2F900F9DE23 /* PickerView */ = {
isa = PBXGroup;
children = (
044CC62C2B876C980083FF76 /* YHSheetPickerViewType.swift */,
044CC62A2B876A230083FF76 /* YHSheetPickerView.swift */,
042FBBD32B67A2F900F9DE23 /* YHFormPickerView.swift */,
043955202B70955200955D49 /* YHFormPickerViewType.swift */,
);
......@@ -1727,6 +1733,7 @@
0468D4202B49320900CFB916 /* YHVerificationCodeLoginController.swift in Sources */,
043955252B70D20300955D49 /* YHFormItemQuestionsCell.swift in Sources */,
0468D4532B6782BE00CFB916 /* YHCardExampleView.swift in Sources */,
044CC62B2B876A230083FF76 /* YHSheetPickerView.swift in Sources */,
A596C3A12B84D9100067BBB8 /* YHOtherTextViewItemView.swift in Sources */,
04010B952B6A1DE90093F3BB /* YHSaveAndSubmitView.swift in Sources */,
A5ACE9362B4564F7002C94D2 /* YHNetworkStatusManager.swift in Sources */,
......@@ -1907,6 +1914,7 @@
0468D42B2B55019900CFB916 /* YHAnalytics.swift in Sources */,
A5ACE93C2B4564F7002C94D2 /* UIColor+Extension.swift in Sources */,
04E86E4F2B8479B700A35F4B /* YHWorkIntroductionItemView.swift in Sources */,
044CC62D2B876C980083FF76 /* YHSheetPickerViewType.swift in Sources */,
04E86E5B2B84BF2000A35F4B /* YHWorkExampleTypeView.swift in Sources */,
042FBBBD2B63519C00F9DE23 /* YHFormItemSelectSheetCell.swift in Sources */,
A5FD63C32B63438A00D1D9DA /* YHContactMainItemStatusModel.swift in Sources */,
......
......@@ -357,10 +357,11 @@ extension YHEducationDetailVC : UITableViewDelegate, UITableViewDataSource {
}
} else if detailItem.type == .degreeType { // 学位类型
YHFormPickerView.show(type: .degreeCategory, selectType: .degreeCategory(.accountantOrFinance)) {
[weak self] selectType in
YHSheetPickerView.show(type: .degreeCategory, selectTitle:"工程学") {
[weak self] selectItem in
guard let self = self else { return }
detailInfo.degreeType = selectType.title
detailInfo.degreeType = selectItem.title
loadInfo()
if detailId != 0 {
saveDetailInfo(isNeedPop: false)
......
//
// YHSheetPickerView.swift
// galaxy
//
// Created by edy on 2024/2/22.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
// 【 用法 Usage】
/*
// (1) 直接传index 此处的index是后台的数值,并非行数
YHSheetPickerView.show(type: .degree, selectIndex: 1) {
selectItem in
}
// (2) 直接传字符串值
YHSheetPickerView.show(type: .degree, selectTitle:"博士学位") {
selectItem in
}
// 如何扩展新类型
1、YHSheetPickerViewType添加一个新类型
2、dataSource这个字典中添加新类型对应的数组即可
*/
import UIKit
class YHSheetPickerView: UIView {
let type: YHSheetPickerViewType
// 选择的行
var selectRow:Int = 0
private var selectBlock:((YHSheetPickerViewItem)->Void)?
var title: String? {
didSet {
titleLabel.text = title
}
}
lazy var pickerView:UIPickerView = {
let view = UIPickerView()
view.dataSource = self
view.delegate = self
return view
}()
lazy var blackMaskView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0x0F1214, alpha: 0.5)
let tap = UITapGestureRecognizer(target: self, action: #selector(dismiss))
view.addGestureRecognizer(tap)
return view
}()
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
return view
}()
lazy var topView:UIView = {
let view = UIView()
view.addSubview(titleLabel)
view.addSubview(cancelBtn)
view.addSubview(confirmBtn)
titleLabel.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
cancelBtn.snp.makeConstraints { make in
make.left.top.bottom.equalToSuperview()
make.width.equalTo(60)
}
confirmBtn.snp.makeConstraints { make in
make.right.top.bottom.equalToSuperview()
make.width.equalTo(60)
}
return view
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.textColor = UIColor.mainTextColor
label.textAlignment = .center
label.font = UIFont.PFSC_R(ofSize: 16)
label.text = "请选择"
return label
}()
lazy var cancelBtn: UIButton = {
let btn = UIButton()
btn.setTitle("取消".local, for: .normal)
btn.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
btn.setTitleColor(UIColor.mainTextColor, for: .normal)
btn.addTarget(self, action: #selector(didClickCancelButton), for: .touchUpInside)
return btn
}()
lazy var confirmBtn: UIButton = {
let btn = UIButton()
btn.setTitle("确定".local, for: .normal)
btn.titleLabel?.font = UIFont.PFSC_R(ofSize: 14)
btn.setTitleColor(UIColor(hex: 0x4487F9), for: .normal)
btn.addTarget(self, action: #selector(didClickConfirmButton), for: .touchUpInside)
return btn
}()
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
init(type: YHSheetPickerViewType) {
self.type = type
super.init(frame: UIScreen.main.bounds)
self.createUI()
}
func show() {
showSelectRow()
UIApplication.shared.yhKeyWindow()?.addSubview(self)
}
func showSelectRow() {
if let arr = dataSource[type], selectRow < arr.count {
pickerView.selectRow(selectRow, inComponent: 0, animated: true)
} else {
pickerView.selectRow(0, inComponent: 0, animated: true)
}
}
static func show(type:YHSheetPickerViewType, selectIndex:Int, callBack: @escaping ((YHSheetPickerViewItem)->Void)) {
let picker = YHSheetPickerView(type: type)
picker.selectRow = picker.getRowOfPickerViewItem(index: selectIndex)
picker.selectBlock = callBack
picker.show()
}
static func show(type:YHSheetPickerViewType, selectTitle:String?, callBack: @escaping ((YHSheetPickerViewItem)->Void)) {
let picker = YHSheetPickerView(type: type)
picker.selectRow = picker.getRowOfPickerViewItem(title:selectTitle)
picker.selectBlock = callBack
picker.show()
}
lazy var dataSource:[YHSheetPickerViewType: [YHSheetPickerViewItem]] = {
return [
// 默认无
.none:[],
// 学位
.degree:
[YHSheetPickerViewItem(title:"学士学位".local, index:0),
YHSheetPickerViewItem(title:"硕士学位".local, index:1),
YHSheetPickerViewItem(title:"博士学位".local, index:2)
],
// 婚姻
.marriage:
[YHSheetPickerViewItem(title:"未婚".local, index:0),
YHSheetPickerViewItem(title:"已婚".local, index:1),
YHSheetPickerViewItem(title:"分居".local, index:2),
YHSheetPickerViewItem(title:"离婚".local, index:3),
YHSheetPickerViewItem(title:"丧偶".local, index:4),
],
// 教育
.edution:
[YHSheetPickerViewItem(title:"全日制".local, index:0),
YHSheetPickerViewItem(title:"兼职制".local, index:1),
YHSheetPickerViewItem(title:"遥距课程".local, index:2),
],
// 职业
.occupation:
[YHSheetPickerViewItem(title:"在职".local, index:0),
YHSheetPickerViewItem(title:"退休".local, index:1),
YHSheetPickerViewItem(title:"无业".local, index:2),
YHSheetPickerViewItem(title:"学生".local, index:3),
],
// YHSheetPickerViewItem(title:"".local, index:)
// 职业2
.profession:
[YHSheetPickerViewItem(title:"企业管理者 (高级管理者)".local, index:0),
YHSheetPickerViewItem(title:"企业管理者 (包括初、中级层管理者)".local, index:1),
YHSheetPickerViewItem(title:"自主创业 (有实际运营的公司)".local, index:2),
YHSheetPickerViewItem(title:"普通职员 (办公室/写字楼)".local, index:3),
YHSheetPickerViewItem(title:"专业人员 (医生/教师/律师/记者/文体)".local, index:4),
YHSheetPickerViewItem(title:"个体经营/承包商".local, index:5),
YHSheetPickerViewItem(title:"政府机关干部/公务人员".local, index:6),
YHSheetPickerViewItem(title:"在校学生".local, index:7),
YHSheetPickerViewItem(title:"家庭主妇".local, index:8),
YHSheetPickerViewItem(title:"退休人员".local, index:9),
YHSheetPickerViewItem(title:"应届毕业生".local, index:10),
YHSheetPickerViewItem(title:"其他".local, index:11),
],
// 性别
.gender:
[YHSheetPickerViewItem(title:"男".local, index:0),
YHSheetPickerViewItem(title:"女".local, index:1),
],
// 证件
.certificate:
[YHSheetPickerViewItem(title:"护照".local, index:3),
YHSheetPickerViewItem(title:"旅游通行证".local, index:4),
YHSheetPickerViewItem(title:"外交护照".local, index:5),
YHSheetPickerViewItem(title:"中国发无国籍旅游证件".local, index:6),
YHSheetPickerViewItem(title:"其他无国籍旅行证件".local, index:7),
YHSheetPickerViewItem(title:"联合国通行证".local, index:8),
YHSheetPickerViewItem(title:"公务护照".local, index:9),
YHSheetPickerViewItem(title:"其他".local, index:10),
],
// 在港身份
.identity:
[YHSheetPickerViewItem(title:"学生".local, index:0),
YHSheetPickerViewItem(title:"就业".local, index:1),
YHSheetPickerViewItem(title:"居留".local, index:2),
YHSheetPickerViewItem(title:"访问".local, index:3),
YHSheetPickerViewItem(title:"其他".local, index:4),
],
// 是否拥有学位
.ownDegree:
[YHSheetPickerViewItem(title:"有学位".local, index:0),
YHSheetPickerViewItem(title:"无学位".local, index:1),
],
// 学位颁发地区
.degreeLocation:
[YHSheetPickerViewItem(title:"国内 (颁发)".local, index:0),
YHSheetPickerViewItem(title:"国外 (颁发)".local, index:1),
],
// 专业证书
.professionCertificate:
[YHSheetPickerViewItem(title:"CFA(注册金融分析师)".local, index:0),
YHSheetPickerViewItem(title:"CFP(CFP证书是目前世界上权威的权威理财顾问认证项目之一)".local, index:1),
YHSheetPickerViewItem(title:"FRM(金融风险管理师)".local, index:2),
YHSheetPickerViewItem(title:"FIA(保险精算师)".local, index:3),
YHSheetPickerViewItem(title:"CPA(注册会计师)".local, index:4),
YHSheetPickerViewItem(title:"CIIA(注册国际投资分析师)".local, index:5),
YHSheetPickerViewItem(title:"RFC(财务顾问师)".local, index:6),
YHSheetPickerViewItem(title:"ACCA(特许公认会计师)".local, index:7),
YHSheetPickerViewItem(title:"CIA(国际注册内部审计师)".local, index:8),
YHSheetPickerViewItem(title:"CMA(美国管理会计师)".local, index:9),
YHSheetPickerViewItem(title:"CQF(国际数量金融工程认证)".local, index:10),
YHSheetPickerViewItem(title:"CIMA(管理会计师考试)".local, index:11),
YHSheetPickerViewItem(title:"The Associate Chartered Accountant(英国皇家特许会计师)".local, index:12),
],
// 学位类型
.degreeCategory:
[YHSheetPickerViewItem(title:"会计/金融".local, index:0),
YHSheetPickerViewItem(title:"艺术及人文/文学".local, index:1),
YHSheetPickerViewItem(title:"工商管理".local, index:2),
YHSheetPickerViewItem(title:"经济学".local, index:3),
YHSheetPickerViewItem(title:"工程学".local, index:4),
YHSheetPickerViewItem(title:"咨询科技/电子及软件工程/数据科学".local, index:5),
YHSheetPickerViewItem(title:"法律".local, index:6),
YHSheetPickerViewItem(title:"生命科学及医学".local, index:7),
YHSheetPickerViewItem(title:"管理学".local, index:8),
YHSheetPickerViewItem(title:"社会科学".local, index:9),
YHSheetPickerViewItem(title:"其他".local, index:10),
],
]
}()
func createUI() {
self.addSubview(blackMaskView)
self.addSubview(whiteContentView)
whiteContentView.addSubview(topView)
whiteContentView.addSubview(pickerView)
let corner = UIRectCorner(rawValue: UIRectCorner.topLeft.rawValue | UIRectCorner.topRight.rawValue)
let path = UIBezierPath(roundedRect:bounds,byRoundingCorners: corner,cornerRadii:CGSizeMake(16.0, 16.0));
let layer = CAShapeLayer();
layer.frame = whiteContentView.bounds;
layer.path = path.cgPath;
whiteContentView.layer.mask = layer;
if let title = title {
titleLabel.text = title
} else {
titleLabel.text = getTitle(type: type)
}
blackMaskView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
whiteContentView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalToSuperview().offset(KScreenHeight*2/3.0)
}
topView.snp.makeConstraints { make in
make.left.right.top.equalToSuperview()
make.height.equalTo(52)
}
pickerView.snp.makeConstraints { make in
make.top.equalTo(topView.snp.bottom)
make.left.right.bottom.equalToSuperview()
}
}
}
extension YHSheetPickerView {
@objc func didClickCancelButton() {
dismiss()
}
@objc func didClickConfirmButton() {
if let selectItem = getPickerViewItem(row:selectRow), let selectBlock = selectBlock {
selectBlock(selectItem)
dismiss()
}
}
@objc func dismiss() {
self.removeFromSuperview()
}
}
extension YHSheetPickerView {
func getTitle(type: YHSheetPickerViewType)-> String {
switch type {
case .none:
return ""
case .degree:
return "选择学位"
case .marriage:
return "选择婚姻状况"
case .edution:
return "选择学位"
case .occupation:
return "选择职业"
case .gender:
return "选择性别"
case .certificate:
return "选择证件"
case .identity:
return "选择在港身份"
case .ownDegree:
return "是否拥有学位"
case .degreeLocation:
return "选择学位"
case .profession:
return "职业"
case .professionCertificate:
return "选择证书名称"
case .degreeCategory:
return "选择学位类型"
}
}
// 返回所在行的数据
func getPickerViewItem(row:Int) -> YHSheetPickerViewItem? {
if let arr = dataSource[type] {
for (index, item) in arr.enumerated() {
if index == row {
return item
}
}
}
return nil
}
// 返回对应index的数据所在行
func getRowOfPickerViewItem(index:Int) -> Int {
if let arr = dataSource[type] {
for (row, item) in arr.enumerated() {
if item.index == index {
return row
}
}
}
return 0
}
// 返回对应标题的数据所在行
func getRowOfPickerViewItem(title:String?) -> Int {
guard let title = title else { return 0 }
if let arr = dataSource[type] {
for (row, item) in arr.enumerated() {
if item.title == title {
return row
}
}
}
return 0
}
}
// MARK: - UIPickerViewDelegate
extension YHSheetPickerView: UIPickerViewDelegate, UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if let arr = dataSource[type], !arr.isEmpty {
return arr.count
}
return 0
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if let arr = dataSource[type] {
if 0 <= row && row < arr.count {
let item :YHSheetPickerViewItem = arr[row]
return item.title
}
}
return ""
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if let arr = dataSource[type] {
if 0 <= row && row < arr.count {
let item :YHSheetPickerViewItem = arr[row]
print(item.title)
selectRow = row
}
}
}
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let label = UILabel()
label.textColor = UIColor.mainTextColor
label.textAlignment = .center
label.font = UIFont.PFSC_R(ofSize: 14)
label.text = ""
if let arr = dataSource[type] {
if 0 <= row && row < arr.count {
let item :YHSheetPickerViewItem = arr[row]
label.text = item.title
}
}
// 选中背景色
if #available(iOS 14.0, *), pickerView.subviews.count > 1 {
pickerView.subviews[1].backgroundColor = UIColor(hex: 0x4487F9, alpha: 0.06)
}
return label
}
}
//
// YHSheetPickerViewType.swift
// galaxy
//
// Created by edy on 2024/2/22.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
enum YHSheetPickerViewType: Int {
// 按自然顺序递增
case none = 0
// 学位
case degree
// 学位有无
case ownDegree
// 婚姻
case marriage
// 授课形式
case edution
// 职业
case occupation
// 职业2
case profession
// 性别
case gender
// 证件
case certificate
// 在港身份
case identity
// 颁发地区
case degreeLocation
// 专业证书
case professionCertificate
// 学位类型
case degreeCategory
}
class YHSheetPickerViewItem {
var index:Int = -1
var title:String = ""
init(title: String, index: Int) {
self.title = title
self.index = index
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment