Я хочу создать настраиваемую ячейку в UITableviewCell, чтобы я мог изменять содержимое ячейки вместе с параметром, который передается из ModelView. Однако при прокрутке макет нарушается.
Я попытался разделить код на 2 части, как показано ниже.
Объявление части переменных
Часть инициала содержит определение макета
Но если я разделю на 2 части, я не смог бы изменить макеты вместе с переменными, потому что часть Init запускалась до «Объявление частей переменных». Кроме того, я попытался изменить макеты в разделе «Объявление переменных», макеты повреждены. Как я должен код для передачи параметра для изменения содержимого ячейки? Ниже приведена часть моего кода. Макет baseView будет нарушен.
[ViewModel]
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let item = items[indexPath.section]
if let item = item as? AnniversaryViewModelContentsItem, let cell = tableView.dequeueReusableCell(withIdentifier: ANContentCell.identifier, for: indexPath) as? ANContentCell {
cell.selectionStyle = .none
cell.item = item.contents[indexPath.row]
cell.contentView.setNeedsLayout()
cell.contentView.layoutIfNeeded()
return cell
}
return UITableViewCell()
}
[Cell: ANContentCell]
// Declare Variable Part ---------------------------------------------------------------------
........
var item: ANContent? {
didSet {
guard let item = item?.dataPerRow else {
return
}
let graphArray = [graph00, graph01, graph02, graph03]
if item.mode == 1 {
baseView.anchor(
top: self.safeAreaLayoutGuide.topAnchor,
leading: self.safeAreaLayoutGuide.leadingAnchor,
bottom: self.safeAreaLayoutGuide.bottomAnchor,
trailing: self.safeAreaLayoutGuide.trailingAnchor,
padding: .init(top: 0, left:0, bottom:0, right:0), size: .init(width:0, height: item.hight )
)
}
for i in 0...(graphArray.count - 1){
// Graph Anchor
graphArray[i].anchor(
top: baseView.safeAreaLayoutGuide.topAnchor,
leading: baseView.leadingAnchor,
bottom: nil,
trailing: nil,
padding: .init(
top: item.top,
left: item.left,
bottom:0,
right:0
),
size: .init(
width:item.width,
height: item.height
)
)
.........
}
}
}
private let baseView: UIView = {
var baseView = UIView()
baseView.backgroundColor = .clear
return baseView
}()
var graph00: UIView = {
let graph = UIView()
return graph
}()
var graph01: UIView = {
let graph = UIView()
return graph
}()
var graph02: UIView = {
let graph = UIView()
return graph
}()
var graph03: UIView = {
let graph = UIView()
return graph
}()
// Init parts ---------------------------------------------------------------------
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
let graphArray = [graph00, graph01, graph02, graph03]
// Add Object
addSubview(baseView)
for i in 0...(graphArray.count - 1){
baseView.addSubview(graphArray[i])
}
}