gpt4 book ai didi

swift - 在 ViewController 中访问自定义单元格

转载 作者:行者123 更新时间:2023-11-28 07:33:38 25 4
gpt4 key购买 nike

我想在用户滚动表格 View 时访问自定义单元格中标签的 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)
}

打印语句打印正确的 alpha 值,但在我启动应用程序时不会影响 Storyboard。

我试图替换:

itemsTableView.dequeueReusableCell(withIdentifier: "headerCell")

作者:

itemsTableView.cellForRow(at: IndexPath(row: 0, section: 0))

但它不会通过 guard 语句。

编辑(新尝试):

for cell in itemsTableView.visibleCells {
if let headerCell = cell as? HeaderTableViewCell {
print("success")
headerCell.setAlpha(to: 1 - scrollView.contentOffset.y / 30)
}
}

然后我尝试为所有可见单元格打印 reuseIdentifier,结果如下:

nil Optional("itemCell") Optional("itemCell") Optional("itemCell") Optional("itemCell") Optional("itemCell")

第一个是nil,但它应该是“headerCell”,它在interface builder中设置正确。

我的 tableView 包含标题单元格和项目单元格:

enter image description here enter image description here

最佳答案

你可能需要

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 {
}
}

关于swift - 在 ViewController 中访问自定义单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53907401/

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