wsd38 2021-10-25 16:40 采纳率: 0%
浏览 75
已结题

关于pickerview数据显示错乱的问题

想做一个课程表app,现在是想用三个pickerview给用户选择周几上课以及上课下课的时间,但是pickerview选出来的时间是错乱的,完全没有规律,求
解答一下(做的第一个app,自学的)

img

img

  • <input type="checkbox" disabled="" />

    img

//
//  ViewController.swift
//  Timetable
//
//  Created by 魏瑾 on 2021/10/10.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var ChooseWeekTextField: UITextField!
    
    @IBOutlet weak var ChooseStartTimeTextField: UITextField!
    
    @IBOutlet weak var ChooseEndTimeTextField: UITextField!
    
    let Week = ["周一","周二","周三","周四","周五","周六","周天"]
    let StartTimeHour = ["","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23"]
    let StartTimeScend = ["","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59"]
    let EndTimeHour = ["","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23"]
    let EndTimeScend = ["","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59"]
    
    var WeekPickerView = UIPickerView()
    var StarTimePickerView = UIPickerView()
    var EndTimePickerView = UIPickerView()
    
    var ClassWeekDay = ""
    var ClassStartTimeHour = ""
    var ClassStartTimeScend = ""
    var ClassEndTimeHour = ""
    var ClassEndTimeScend = ""
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        ChooseWeekTextField.inputView = WeekPickerView
        ChooseStartTimeTextField.inputView = StarTimePickerView
        ChooseEndTimeTextField.inputView = EndTimePickerView
        
        ChooseWeekTextField.textAlignment = .center
        ChooseStartTimeTextField.textAlignment = .center
        ChooseEndTimeTextField.textAlignment = .center
        
        WeekPickerView.dataSource = self
        WeekPickerView.delegate = self
        StarTimePickerView.dataSource = self
        StarTimePickerView.delegate = self
        EndTimePickerView.dataSource = self
        EndTimePickerView.delegate = self
        
        WeekPickerView.tag = 1
        StarTimePickerView.tag = 2
        EndTimePickerView.tag = 3
        
        creatChooseWeekPicker()
        
    }

    func creatChooseWeekPicker() {
        
        let ToolBar = UIToolbar()
        ToolBar.sizeToFit()
        
        let DoneButton = UIBarButtonItem(title: "确认", style: .done, target: nil, action: #selector(DoneButtonPressed))
        ToolBar.setItems([DoneButton], animated: true)
        
        ChooseWeekTextField.inputAccessoryView = ToolBar
        ChooseStartTimeTextField.inputAccessoryView = ToolBar
        ChooseEndTimeTextField.inputAccessoryView = ToolBar
    }
    
    @objc func DoneButtonPressed() {
        self.view.endEditing(true)
    }

}

extension ViewController: UIPickerViewDataSource {
    
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        switch pickerView.tag {
        case 1:
            return 1
        case 2:
            return 4
        case 3:
            return 4
        default:
            return 1
        }
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        switch pickerView.tag {
        case 1:
            return Week.count
        case 2:
            switch component {
            case 0:
                return StartTimeHour.count
            case 1:
                return 1
            case 2:
                return StartTimeScend.count
            case 3:
                return 1
            default:
                return 0
            }
        case 3:
            switch component {
            case 0:
                return EndTimeHour.count
            case 1:
                return 1
            case 2:
                return EndTimeScend.count
            case 3:
                return 1
            default:
                return 0
            }
        default:
            return 1
        }
    }
    
}

extension ViewController: UIPickerViewDelegate {
    
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        switch pickerView.tag {
        case 1:
            ClassWeekDay = Week[row]
            return Week[row]
        case 2:
            switch component {
            case 0:
                ClassStartTimeHour = StartTimeHour[row]
                return StartTimeHour[row]
            case 1:
                return "时"
            case 2:
                ClassStartTimeScend = StartTimeScend[row]
                return StartTimeScend[row]
            case 3:
                return "分"
            default:
                return "请重新选择"
            }
        case 3:
            switch component {
            case 0:
                ClassEndTimeHour = EndTimeHour[row]
                return EndTimeHour[row]
            case 1:
                return "时"
            case 2:
                ClassEndTimeScend = EndTimeScend[row]
                return EndTimeScend[row]
            case 3:
                return "分"
            default:
                return "请重新选择"
            }
        default:
            return "haha"
        }
    }
    
    func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
        switch pickerView.tag {
        case 1:
            ChooseWeekTextField.text = Week[row]
        case 2:
            ChooseStartTimeTextField.text = "\(ClassStartTimeHour)\(ClassStartTimeScend)分"
        case 3:
            ChooseEndTimeTextField.text = "\(ClassEndTimeHour)\(ClassEndTimeScend)分"
        default:
            return nil
        }
        return nil
    }
    
}


  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-10-27 10:17
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    评论

报告相同问题?

问题事件

  • 系统已结题 11月2日
  • 创建了问题 10月25日

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况