我有一个带有UICollectionView的应用程序。每个自定义单元格都有一个圆形的进度视图和一个应该提高进度的按钮,但是我无法弄清楚如何在按钮操作中更改特定单元格的子视图的属性。
我尝试过
将目标添加到“ cellForItemAt indexPath”函数内部的按钮上,然后在目标函数内部调用该特定单元格。
在自定义单元格类中添加IBAction,但同样是同样的问题
基本上,问题是如何在“ cellForItemAt”函数外部的某个索引路径处调用特定的单元格?
答案 0 :(得分:0)
您可以这样设置UICollectionViewCell子类:
class MyCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var button: UIButton!
@IBOutlet weak var progressView: UIProgressView!
var buttonAction: (() -> Void)?
@IBAction func didPressButton() {
buttonAction?()
}
}
并在您的UITableViewDelegate
中func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "your identifier", for: indexPath) as! MyCollectionViewCell
cell.buttonAction = {
//Do whatever you wish
}
...
...
return cell
}
答案 1 :(得分:0)
在cellForItemAt indexPath
函数内部的按钮上添加目标,并使用以下按钮函数将索引路径作为标签发送:-
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "your identifier", for: indexPath) as! MyCollectionViewCell
cell.buttonAction = {
//Do whatever you wish
}
...
...
**cell.button.tag = indexPath.row**
return cell
}
然后,已将其设置为目标的函数,您需要通过编写以下代码来更新该特定单元以更新UI
[self.collectionView reloadItemsAtIndexPaths:@[Sender.tag]];