0

我正在显示此图像中显示的数据 我想显示我用作标签的标记或分数。大约 100 个标签。

我将每个学生的详细信息作为 1 个单独的数组,例如:

student1 = [
    [test details, test1, test2, test3, test4],
    [subject1,100,98,56,78],
    [subject2,67,78,89,56],
    [subject3,67,56,34,78],
    [subject4,56,46,84,38]]
student2 = [[test details, test1, test2, test3, test4],[subject1,100,98,56,78],[subject2,67,78,89,56],[subject3,67,56,34,78],[subject4,56,46,84,38]]

等等....

我想在UITableViewCell自定义单元格中显示这些详细信息。

我写了类StudentCustomCell,它扩展了UITableViewCell

使用 for 循环

  1. 创建滚动视图
  2. 创建分数的背景视图
  3. 并根据我的要求创建标记标签

当我执行代码时,只有学生 1 的相同标签/标记显示在所有单元格中。

因为我在 for-in-loop 中只使用学生 1 计数。

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

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

        cell.cricketerName.text = studentDetails[indexPath.row][0]
        cell.studentImage.image = UIImage(named: studentDetails[indexPath.row][0])

    }

    return cricketerCell

}
func scoreScrollView(){

    scView = UIScrollView(frame: CGRect(x: 0, y: 120, width: cricketView.frame.width, height: 220))

    scView.backgroundColor = .white
    self.addSubview(scView)

    var formatView:UIView!

for i in 0..<(student1[0] as AnyObject).count! {

     formatView = UIView()
     xAxis = 10
     formatView.frame = CGRect(x: 0, y: CGFloat(yAxis), width: 640, height: 40)

     if(i % 2 == 0){
     formatView.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.2132919521)
     }else{
     formatView.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.4010595034)
     }

     for j in 0..<student1.count {

     let label = UILabel()
     label.text = "\(student1[j][i])"
     label.frame = CGRect(x: xAxis, y: CGFloat(yAxis)+5, width: 60, height: 30)
     xAxis = xAxis + 65
     scView.addSubview(label)
     }
     yAxis = yAxis + 40
     scView.addSubview(formatView)
     scrolls.append(scView)
     }

     scView.contentSize = CGSize(width: xAxis, height: scView.frame.height)

}

test details     subject1    subject2    subject3   subject4                 

test1              100          67           67         56               

test2               98          78           56         46        

test3               56          89           34         84                 

test4               78          56           78         38                 

我在表格视图的单元格/行中显示如上所述的结果。

4

1 回答 1

1

对于这种复杂的布局要求,您应该考虑序列化您的布局逻辑。这样做的流行方法是使用 XIB / Storyboards 来布局你的 UITableViewCell 派生单元。

然而,挑战在于根据设备尺寸的变化定位元素。因此,您应该使用 iOS 的自动布局功能 - 只需执行一次,您会发现以后更容易包含其他更改。

相反 - 想象一下在代码中编写框架设置布局逻辑的恐怖。2 周后,您将无法弄清楚您编写该代码的原因。在代码中编写此逻辑的有效案例确实存在(加载 xib/storyboard 的性能原因),但此处不适用。

为此,请参阅诸如thisthis之类的详细讨论。你不会得到直接的代码,但你肯定会知道如何有效地做到这一点。

于 2019-05-20T07:39:54.423 回答