按钮图像在单元格上重复
Button Image Repeated On cell
我想在点击单元格时播放音频。并更改按钮 image.They 工作正常。但是当我自动滚动我的 4 格按钮图像时 change.Please 帮助。任何帮助将不胜感激。
@IBAction func playSong (_ sender : UIButton , event: UIEvent){
let buttonPosition:CGPoint = sender.convert(.zero, to: table)
let indexPath = self.table.indexPathForRow(at: buttonPosition)
let cell = table.cellForRow(at: indexPath!) as? CustumCell
let a = URL(string : "http://www.abstractpath.com/files/audiosamples/sample.mp3")
if((audioPlayers) != nil){
audioPlayers = nil
}
audioPlayers = AVPlayer(url: a!)
if sender.isSelected == false {
sender.isSelected = true
audioPlayers?.play()
cell?.play.setImage(UIImage(named : "homestop"), for: .normal)
}else{
sender.isSelected = false
audioPlayers?.pause()
cell?.play.setImage(UIImage(named : "homeplay"), for: .normal)
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier = "CustumCell"
var cell: CustumCell! = tableView.dequeueReusableCell(withIdentifier: identifier) as? CustumCell
if cell == nil {
var nib : Array = Bundle.main.loadNibNamed("CustumCell",owner: self,options: nil)!
cell = nib[4] as? CustumCell
}
cell.reportView.isHidden = true
cell.play.tag = indexPath.row
cell.play.addTarget(self, action:#selector(playSong(_:event:)), for: .touchUpInside)
cell.homereport.tag = indexPath.row
cell.homereport.addTarget(self, action:#selector(showReportView(_:)), for: .touchUpInside)
return cell
}
基本上,每当您滚动 down/top/left/right 并且您标记的单元格超出范围时,每当您返回滚动时 cellForRowAt
将再次被调用。
我建议你用 [UITableViewCell : Bool]
和里面的 :
创建字典
if sender.isSelected == false {
sender.isSelected = true
audioPlayers?.play()
dic[cell] = true
cell?.play.setImage(UIImage(named : "homestop"), for: .normal)
}else{
sender.isSelected = false
audioPlayers?.pause()
dic[cell] = false
cell?.play.setImage(UIImage(named : "homeplay"), for: .normal)
}
稍后在里面:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier = "CustumCell"
var cell: CustumCell! = tableView.dequeueReusableCell(withIdentifier: identifier) as? CustumCell
if cell == nil {
var nib : Array = Bundle.main.loadNibNamed("CustumCell",owner: self,options: nil)!
cell = nib[4] as? CustumCell
}
cell.reportView.isHidden = true
cell.play.tag = indexPath.row
cell.play.addTarget(self, action:#selector(playSong(_:event:)), for: .touchUpInside)
cell.homereport.tag = indexPath.row
cell.homereport.addTarget(self, action:#selector(showReportView(_:)), for: .touchUpInside)
if dic[cell] {
// Set the image of the button or what ever you like to :)
}
return cell
}
我想在点击单元格时播放音频。并更改按钮 image.They 工作正常。但是当我自动滚动我的 4 格按钮图像时 change.Please 帮助。任何帮助将不胜感激。
@IBAction func playSong (_ sender : UIButton , event: UIEvent){
let buttonPosition:CGPoint = sender.convert(.zero, to: table)
let indexPath = self.table.indexPathForRow(at: buttonPosition)
let cell = table.cellForRow(at: indexPath!) as? CustumCell
let a = URL(string : "http://www.abstractpath.com/files/audiosamples/sample.mp3")
if((audioPlayers) != nil){
audioPlayers = nil
}
audioPlayers = AVPlayer(url: a!)
if sender.isSelected == false {
sender.isSelected = true
audioPlayers?.play()
cell?.play.setImage(UIImage(named : "homestop"), for: .normal)
}else{
sender.isSelected = false
audioPlayers?.pause()
cell?.play.setImage(UIImage(named : "homeplay"), for: .normal)
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier = "CustumCell"
var cell: CustumCell! = tableView.dequeueReusableCell(withIdentifier: identifier) as? CustumCell
if cell == nil {
var nib : Array = Bundle.main.loadNibNamed("CustumCell",owner: self,options: nil)!
cell = nib[4] as? CustumCell
}
cell.reportView.isHidden = true
cell.play.tag = indexPath.row
cell.play.addTarget(self, action:#selector(playSong(_:event:)), for: .touchUpInside)
cell.homereport.tag = indexPath.row
cell.homereport.addTarget(self, action:#selector(showReportView(_:)), for: .touchUpInside)
return cell
}
基本上,每当您滚动 down/top/left/right 并且您标记的单元格超出范围时,每当您返回滚动时 cellForRowAt
将再次被调用。
我建议你用 [UITableViewCell : Bool]
和里面的 :
if sender.isSelected == false {
sender.isSelected = true
audioPlayers?.play()
dic[cell] = true
cell?.play.setImage(UIImage(named : "homestop"), for: .normal)
}else{
sender.isSelected = false
audioPlayers?.pause()
dic[cell] = false
cell?.play.setImage(UIImage(named : "homeplay"), for: .normal)
}
稍后在里面:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identifier = "CustumCell"
var cell: CustumCell! = tableView.dequeueReusableCell(withIdentifier: identifier) as? CustumCell
if cell == nil {
var nib : Array = Bundle.main.loadNibNamed("CustumCell",owner: self,options: nil)!
cell = nib[4] as? CustumCell
}
cell.reportView.isHidden = true
cell.play.tag = indexPath.row
cell.play.addTarget(self, action:#selector(playSong(_:event:)), for: .touchUpInside)
cell.homereport.tag = indexPath.row
cell.homereport.addTarget(self, action:#selector(showReportView(_:)), for: .touchUpInside)
if dic[cell] {
// Set the image of the button or what ever you like to :)
}
return cell
}