当用户滚动表格视图时,我想访问自定义单元格中标签的alpha值。
我的自定义单元格类:
class HeaderTableViewCell: UITableViewCell {
@IBOutlet weak var buttonOutlet: UIButton!
@IBOutlet weak var monigerTitle: UILabel!
@IBOutlet weak var monigerSubtitle: UILabel!
func setAlpha(to alpha: CGFloat) {
buttonOutlet.alpha = alpha
monigerTitle.alpha = alpha
buttonOutlet.alpha = alpha
}
}
滚动调用的函数:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
guard let cell = itemsTableView.dequeueReusableCell(withIdentifier: "headerCell") as? HeaderTableViewCell else {
return
}
cell.setAlpha(to: 1 - scrollView.contentOffset.y / 30)
print(cell.monigerTitle.alpha)
}
print语句可打印正确的Alpha值,但在启动应用程序时不会影响情节提要。
我试图替换:
itemsTableView.dequeueReusableCell(withIdentifier: "headerCell")
作者:
itemsTableView.cellForRow(at: IndexPath(row: 0, section: 0))
但是它不会通过保护声明。
编辑(新尝试):
for cell in itemsTableView.visibleCells {
if let headerCell = cell as? HeaderTableViewCell {
print("success")
headerCell.setAlpha(to: 1 - scrollView.contentOffset.y / 30)
}
}
然后我尝试为所有可见的单元格打印reuseIdentifier,这就是结果:
nil可选(“ itemCell”)可选(“ itemCell”)可选(“ itemCell”) Optional(“ itemCell”)Optional(“ itemCell”)
第一个为nil,但应为“ headerCell”,在接口构建器中正确设置。
我的tableView带有标题单元格和项目单元格:
答案 0 :(得分:0)
您可能需要
guard let cells = itemsTableView.visibleCells as? [HeaderTableViewCell] else { return }
cellForRowAt
在该项可见时运行,并且您始终传递索引0
编辑:
itemsTableView.visibleCells.forEach {
if let cell = $0 as? CellName1 {
}
else if let cell = $0 as? CellName2 {
}
}