swift2 表格视图数据未在swift中正确显示

fdx2calv  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(179)

带有三个复选框[in,out,absent]的表视图如果单击任何一个复选框[in,out,absent],它将调用Json服务并在表视图中显示数据,除[Out]复选框外,所有这些都正常工作。如果我单击[out]复选框,则会在out标签处显示[outlabel:11:54 PM]。在[outlabelg:],如果我单击tableview中的下一个单元格[out checkbox],则会更新先前的[out:Labledata]数据并显示选定的单元格[out:lable]数据。请帮助我哪里出错了
这是表视图代码

func numberOfSections(in tableView: UITableView) -> Int {

    return (attendanceInfo.count == 0) ? 0 : 1

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return attendanceInfo.count

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell =
        tableView.dequeueReusableCell(
            withIdentifier: "DetailsCell", for: indexPath) as! AttendanceDetailsTableViewCell

    let row = (indexPath as NSIndexPath).row

    cell.InButton.tag = row

    cell.OutButton.tag = row

    cell.AbsentButton.tag = row

    let maskLayer = CAShapeLayer()

    let bounds = cell.bounds

    maskLayer.path = UIBezierPath(roundedRect: CGRect(x: 5, y: 3, width: bounds.width-15, height: bounds.height-15), cornerRadius: 2).cgPath
    cell.layer.mask = maskLayer

    if(attendanceInfo.count>0){

        let attendance = attendanceInfo[row] as AttendanceInfo

       cell.AttendnceLabel.textColor = UIColor(red: CGFloat(0x00)/255
            ,green: CGFloat(0xB1)/255
            ,blue: CGFloat(0xB1)/255
            ,alpha: 1.0)

        cell.AbsentInfoLabel.isHidden = true

        cell.Absentinfovalue.isHidden = true

        if(attendance.inTime == "")&&(attendance.outTime == "")
        {

            cell.InButton.isHidden = false
            cell.OutButton.isHidden = true
            cell.AbsentButton.isHidden = true
            cell.OutinfoLabel.isHidden = false

        }

        if(attendance.inTime != "")
        {

            cell.InButton.isHidden = true
            cell.OutButton.isHidden = false
            cell.AbsentButton.isHidden = false
            cell.OutinfoLabel.isHidden = false

        }

        if(attendance.inTime != "") && (attendance.outTime != "")
        {

            cell.InButton.isHidden = true
            cell.OutButton.isHidden = true
            cell.AbsentButton.isHidden = true
            cell.OutinfoLabel.isHidden = false
            cell.OutLable.text = attendance.outTime

        }

        if(attendance.attendance == "PRESENT")

        {
            cell.OutLable.text = attendance.outTime

        }

        if(attendance.attendance == "ABSENT")
        {
            cell.InButton.isHidden = true
            cell.OutButton.isHidden = true
            cell.AbsentButton.isHidden = true

            cell.Absentinfovalue.isHidden = false
            cell.OutLable.isHidden = true
            cell.OutinfoLabel.isHidden = true

           cell.AttendnceLabel.textColor = UIColor.red
            cell.Absentinfovalue.text = attendance.updatedTime

        }

        cell.Class.text = attendance.standard

        cell.NameLabel.text = attendance.name

        cell.InLabel.text = attendance.inTime

        cell.OutLable.text = attendance.outTime

        cell.AttendnceLabel.text = attendance.attendance

        cell.DateLablel.text = attendance.attendanceDate

        cell.attendanceid = attendance.attendanceId

        cell.backgroundView = UIImageView(image: UIImage(named: "background_common")!)

        cell.Profileimage.image = UIImage(named: "profile_pic")
        cell.Profileimage.downloadImageFrom(link: attendance.photo!, contentMode: UIViewContentMode.scaleAspectFit)

        if(InCheckec[indexPath.row]==true)
        {
            cell.InButton.setBackgroundImage(UIImage(named: "Check_Box"), for: UIControlState.normal)
            cell.InButton.isSelected = true

        }
        else{

            cell.InButton.setBackgroundImage(UIImage(named: "uncheck_Box"), for: UIControlState.normal)
            cell.InButton.isSelected = false
        }

        if(OutCheckec[indexPath.row]==true)
        {
            cell.OutButton.setBackgroundImage(UIImage(named: "Check_Box"), for: UIControlState.normal)
            cell.OutButton.isSelected = true

        }
        else{

            cell.OutButton.setBackgroundImage(UIImage(named: "uncheck_Box"), for: UIControlState.normal)
            cell.OutButton.isSelected = false
        }

        if(AbsentCheckec[indexPath.row]==true)
        {
            cell.AbsentButton.setBackgroundImage(UIImage(named: "Check_Box"), for: UIControlState.normal)
            cell.AbsentButton.isSelected = true

        }
        else{

            cell.AbsentButton.setBackgroundImage(UIImage(named: "uncheck_Box"), for: UIControlState.normal)
            cell.AbsentButton.isSelected = false
        }
    }

    return cell

}

这是out复选框的代码[in,absent也是这样的代码方式]

@IBAction func OUTBUTTON(_ sender: UIButton) {
    snackbar.backgroundColor = UIColor(red: CGFloat(0x00)/255
        ,green: CGFloat(0xB1)/255
        ,blue: CGFloat(0xB1)/255
        ,alpha: 1.0)

    status = "2"

    let buttontag = sender.tag

    let prefs:UserDefaults = UserDefaults.standard
    StaffID = prefs.value(forKey: "STAFFID") as! String

    let position: CGPoint = sender.convert(CGPoint(x: 10, y: 20), to: self.TableView)
    let indexPath = self.TableView.indexPathForRow(at: position)

    if (sender.isSelected == true)

    {

        OutCheckec[buttontag] = false
        inButtoncount -= 1

        if(inButtoncount == 0)
        {
            snackbar.dismiss()
            upStudentId.removeAll()
            upAttendanceID.removeAll()
            UPstatusTest.removeAll()
        }
        else{

            upStudentId.removeLast()
            UPstatusTest.removeLast()
            upAttendanceID.removeLast()

        }

    }
    else
    {

        OutCheckec[buttontag] = true
        AbsentCheckec[buttontag] = false

        inButtoncount += 1
        snackbar.show()

        let out:Bool = true

        prefs.set(out, forKey:"1")

        let kid = attendanceInfo[(indexPath?.row)!] as AttendanceInfo

        upStudentId.append(kid.studentId!)
        upAttendanceID.append(kid.attendanceId)
        UPstatusTest.append(status)
        upStaffId = StaffID

    }

    self.TableView.reloadRows(at: [indexPath!], with: UITableViewRowAnimation.none)

}

这是Json结果

6qqygrtg

6qqygrtg1#

这是工作代码

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell =
            tableView.dequeueReusableCell(
                withIdentifier: "DetailsCell", for: indexPath) as! AttendanceDetailsTableViewCell

        let row = (indexPath as NSIndexPath).row

        cell.InButton.tag = row

        cell.OutButton.tag = row

        cell.AbsentButton.tag = row

        let maskLayer = CAShapeLayer()

        let bounds = cell.bounds

        maskLayer.path = UIBezierPath(roundedRect: CGRect(x: 5, y: 3, width: bounds.width-15, height: bounds.height-15), cornerRadius: 2).cgPath
        cell.layer.mask = maskLayer

        if(attendanceInfo.count>0){

        let attendance = attendanceInfo[row] as AttendanceInfo

           cell.AttendnceLabel.textColor = UIColor(red: CGFloat(0x00)/255
                ,green: CGFloat(0xB1)/255
                ,blue: CGFloat(0xB1)/255
                ,alpha: 1.0)

        if(attendance.inTime == "")&&(attendance.outTime == "")
            {

                cell.InButton.isHidden = false
                cell.OutButton.isHidden = true
                cell.AbsentButton.isHidden = true
            }

            if(attendance.inTime != "")
            {
                cell.InButton.isHidden = true
                cell.OutButton.isHidden = false
                cell.AbsentButton.isHidden = false
            }

            if(attendance.inTime != "") && (attendance.outTime != "")
            {

                cell.InButton.isHidden = true
                cell.OutButton.isHidden = true
                cell.AbsentButton.isHidden = true
                cell.OutLable.text = attendance.outTime

            }
            cell.OutLable.text=" "
            cell.OutinfoLabel.text="Out"

            if(attendance.attendance == "PRESENT")

            {
                cell.OutLable.text = attendance.outTime
                cell.OutinfoLabel.text = "Out"

            }else if(attendance.attendance == "ABSENT")
            {
                cell.InButton.isHidden = true
                cell.OutButton.isHidden = true
                cell.AbsentButton.isHidden = true

                cell.OutinfoLabel.text = "Absent11"
                cell.OutLable.text = attendance.updatedTime
                cell.AttendnceLabel.textColor = UIColor.red

            }

            cell.Class.text = attendance.standard

            cell.NameLabel.text = attendance.name

            cell.InLabel.text = attendance.inTime

            cell.AttendnceLabel.text = attendance.attendance

            cell.DateLablel.text = attendance.attendanceDate

            cell.attendanceid = attendance.attendanceId

            cell.backgroundView = UIImageView(image: UIImage(named: "background_common")!)

            cell.Profileimage.image = UIImage(named: "profile_pic")
            cell.Profileimage.downloadImageFrom(link: attendance.photo!, contentMode: UIViewContentMode.scaleAspectFit)

            if(InCheckec[indexPath.row]==true)
            {
                cell.InButton.setBackgroundImage(UIImage(named: "Check_Box"), for: UIControlState.normal)
                cell.InButton.isSelected = true

            }
            else{

                cell.InButton.setBackgroundImage(UIImage(named: "uncheck_Box"), for: UIControlState.normal)
                cell.InButton.isSelected = false
            }

            if(OutCheckec[indexPath.row]==true)
            {
                cell.OutButton.setBackgroundImage(UIImage(named: "Check_Box"), for: UIControlState.normal)
                cell.OutButton.isSelected = true

            }
            else{

                cell.OutButton.setBackgroundImage(UIImage(named: "uncheck_Box"), for: UIControlState.normal)
                cell.OutButton.isSelected = false
            }

            if(AbsentCheckec[indexPath.row]==true)
            {
                cell.AbsentButton.setBackgroundImage(UIImage(named: "Check_Box"), for: UIControlState.normal)
                cell.AbsentButton.isSelected = true

            }
            else{

                cell.AbsentButton.setBackgroundImage(UIImage(named: "uncheck_Box"), for: UIControlState.normal)
                cell.AbsentButton.isSelected = false
            }
        }

        return cell

    }

相关问题