gpt4 book ai didi

ios - 复杂 UITableViewCell 的问题

转载 作者:可可西里 更新时间:2023-11-01 02:04:53 26 4
gpt4 key购买 nike

我正在尝试实现一个自定义的复杂 UITableViewCell。我的数据源相对简单,但我可以有多个元素。

class Element: NSObject {
var id: String
var titles: [String]
var value: String

init(id: String, titles: [String], value: String) {
self.id = id
self.titles = titles
self.value = value
}
}

我有一个元素数组 [Element],正如您所见,每个元素 titles 可以有多个字符串值。我必须使用以下布局:

single_cell

double_cell

multiple_cell

我的第一个方法是实现一个动态的 UITableViewCell,尝试在运行时在 self.contentView 中添加内容。一切正常,但不是很好,如您所见,没有以正确的方式处理可重用性。滞后是可怕的。

import UIKit

class ElementTableCell: UITableViewCell {

var titles: [String]!
var value: String!
var width: CGFloat!
var titleViewWidth: CGFloat!
var cellHeight: Int!

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:)")
}

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.selectionStyle = .none
}

func drawLayout() {
titleViewWidth = (width * 2)/3
cellHeight = 46 * titles.count

for i in 0 ..< titles.count {
let view = initTitleView(title: titles[i], width: titleViewWidth, yPosition: CGFloat(cellHeight * i))
self.contentView.addSubview(view)
}

self.contentView.addSubview(initButton())
}

func initTitleView(title: String, width: CGFloat, yPosition: CGFloat) -> UIView {
let titleView: UILabel = UILabel(frame:CGRect(x:0, y:Int(yPosition), width: Int(width), height: 45))
titleView.text = title
return titleView
}

func initButton(value: String) -> UIButton {
let button = UIButton(frame:CGRect(x: 0, y: 0, width: 70, height:34))
button.setTitle(value, for: .normal)
button.center.x = titleViewWidth + ((width * 1)/3)/2
button.center.y = CGFloat(cellHeight/2)
return priceButton
}
}

以及 UITableView 委托(delegate)方法:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = ElementTableCell(style: .default, reuseIdentifier: "ElementTableCell")

cell.width = self.view.frame.size.width
cell.titles = elements[indexPath.row].titles
cel.value = elements[indexPath.row].value
cell.drawLayout()

return cell
}

现在我正在考虑一种完全不同的方法,例如为 elements 数组中的每个元素使用一个 UITableView Section,为 titles 中的每个标题使用一个 UITableViewCell。它可以工作,但我担心正确的按钮。您有什么建议或其他方法可以分享吗?

最佳答案

为了解决这个问题,我解决了更改应用程序 UI 逻辑的问题。谢谢大家。

关于ios - 复杂 UITableViewCell 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43900265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com