单元格按钮 tableView Swift
Cell button tableView Swift
我有一个带有部分的 tableView,每个部分都有你添加的待办事项。
我正在尝试在我使用单元格按钮委托功能单击的 todoItem 上为我的图片制作动画。但我真的不知道如何连接到那个项目并使其动画化。
我想要访问的是与我在 didSelectRow 中一样访问单元格但在这个 cellButtonFunction 中,因为它是我要按下的单元格中的按钮而不是整个单元格。
我想通过按下按钮完成的事情就像这个例子:
cellPressed.image.ishidden = 假
cellPressed.image.animate()
此单元格图像设置了动画 class,只是我需要为此点击特定的单元格
观看了一些 YouTube 视频并进行了研究,但我无法正常工作,所以我希望你们能帮助我
extension ViewController: FirstTableViewCellDelegate {
func myImageButtonTapped(with index: IndexPath, view: AnimatedCheckmarkView) {
HapticsManager.shared.selectionVibrate()
let todo = self.tableViewCoreData[index.section].sortedItems[index.row - 1]
todo.isMarked = !todo.isMarked
if todo.isMarked == true {
self.tableViewCoreData[index.section].totalMarked += 1
view.animate(withDuration: 1.0, delay: 0.7)
view.isHidden = false
do {
try self.context.save()
}
catch{
//error
}
tableView.reloadData()
} else {
view.isHidden = true
self.tableViewCoreData[index.section].totalMarked -= 1
do {
try self.context.save()
}
catch{
//error
}
tableView.reloadData()
}
这是函数。除了 view.animate() 动画一个随机视图
首先创建委托以接收来自单元格的操作
protocol CellDelegate:AnyObject{
/// pass arguments as per requirement
func cell(buttonDidPressed indexPath: IndexPath)
}
现在在你的单元格中class创建委托的弱引用
class Cell: UICollectionViewCell{
weak var delegate: CellDelegate? = nil
var indexPath: IndexPath!
/// code
@IBAction func buttonDidPressed(_ sender: UIButton) {
delegate?.cell(buttonDidPressed: indexPath)
}
}
现在在你的控制器中确认这个协议
extension ViewController: UICollectionViewDelegate,
UICollectionViewDataSource,
CellDelegate{
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// let cell : Cell dequeueReusableCell your cell
cell.delegate = self
cell.indexPath = indexPath
return cell
}
func cell(buttonDidPressed indexPath: IndexPath){
// your task on cell click
}
}
您还可以在单元格 class 中使用闭包替代协议
我有一个带有部分的 tableView,每个部分都有你添加的待办事项。 我正在尝试在我使用单元格按钮委托功能单击的 todoItem 上为我的图片制作动画。但我真的不知道如何连接到那个项目并使其动画化。 我想要访问的是与我在 didSelectRow 中一样访问单元格但在这个 cellButtonFunction 中,因为它是我要按下的单元格中的按钮而不是整个单元格。
我想通过按下按钮完成的事情就像这个例子:
cellPressed.image.ishidden = 假 cellPressed.image.animate()
此单元格图像设置了动画 class,只是我需要为此点击特定的单元格
观看了一些 YouTube 视频并进行了研究,但我无法正常工作,所以我希望你们能帮助我
extension ViewController: FirstTableViewCellDelegate {
func myImageButtonTapped(with index: IndexPath, view: AnimatedCheckmarkView) {
HapticsManager.shared.selectionVibrate()
let todo = self.tableViewCoreData[index.section].sortedItems[index.row - 1]
todo.isMarked = !todo.isMarked
if todo.isMarked == true {
self.tableViewCoreData[index.section].totalMarked += 1
view.animate(withDuration: 1.0, delay: 0.7)
view.isHidden = false
do {
try self.context.save()
}
catch{
//error
}
tableView.reloadData()
} else {
view.isHidden = true
self.tableViewCoreData[index.section].totalMarked -= 1
do {
try self.context.save()
}
catch{
//error
}
tableView.reloadData()
}
这是函数。除了 view.animate() 动画一个随机视图
首先创建委托以接收来自单元格的操作
protocol CellDelegate:AnyObject{
/// pass arguments as per requirement
func cell(buttonDidPressed indexPath: IndexPath)
}
现在在你的单元格中class创建委托的弱引用
class Cell: UICollectionViewCell{
weak var delegate: CellDelegate? = nil
var indexPath: IndexPath!
/// code
@IBAction func buttonDidPressed(_ sender: UIButton) {
delegate?.cell(buttonDidPressed: indexPath)
}
}
现在在你的控制器中确认这个协议
extension ViewController: UICollectionViewDelegate,
UICollectionViewDataSource,
CellDelegate{
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// let cell : Cell dequeueReusableCell your cell
cell.delegate = self
cell.indexPath = indexPath
return cell
}
func cell(buttonDidPressed indexPath: IndexPath){
// your task on cell click
}
}
您还可以在单元格 class 中使用闭包替代协议