我删除了一些代码,因为它所做的只是显示与状态或按钮无关的文本。
重要因素...状态0为初始状态,状态1已设置并放置在数组中,然后使用cellStateArray [indexPath.row]
进行调用我创建了一个应用程序,该应用程序使用UICollectionViewCell创建单个单元格,并且每个单元格中都有一个倒数计时器。在由myCollectionViewCell类对象控制的单元格中设置了播放和暂停按钮。该类初始化一个布尔变量“ pausePressed = false”。当我单击按钮“ pauseButton”时,动作事件将设置变量“ pausePressed = true”。然后,ViewController循环经过计时器,并检查哪个状态以及pausePressed是否为true。
我感到困惑后会发生什么。当我将单元格置于状态“ 1”时,将显示pauseButton。一旦按下pauseButton,其他单元格就会开始显示播放或暂停按钮。处于状态0的单元格没有任何理由显示隐藏的playButton或pauseButton。并且调试器控制台显示每个状态都正确。播放和暂停按钮在单元格中循环。我的代码在任何时候都不会调用timerPaused变量来再次更改,除非按下按钮时。就像是将信息存储在内存中并将其分配给其他单元一样。
如果由于初始化为false而更改了单元格,则2个周期后将其切换回true。我的代码中没有任何内容再次告知timerPaused = true。仅在按下按钮时才会发生这种情况,只有1次。我通过在pausePressed操作中执行一条打印语句来进行检查,以确保该语句仅在过去触发一次。
我认为这将是一个简单的循环问题,或者cellStateArray无法正确索引。但是,我会在创建每个单元格时检查其状态并暂停状态,以显示正确的信息。下面是控制台的输出。
对于索引:0,当前单元格状态为:0
状态:0-已暂停:未显示
对于索引:1,当前单元格状态为:0
状态:0-已暂停:未显示
对于索引:3,当前单元格状态为:0
状态:0-已暂停:未显示
对于索引:0,当前单元格状态为:0
状态:0-已暂停:未显示
对于索引:1,当前单元格状态为:0
状态:0-已暂停:未显示
对于索引:3,当前单元格状态为:0
状态:0-已暂停:未显示
对于索引:0,当前单元格状态为:0
状态:0-已暂停:未显示
对于索引:1,当前单元格状态为:0
状态:0-已暂停:未显示
我不明白为什么会来回切换,但是pauseTimer并没有再次被称为true,false, true
尝试多次尝试以不同的逻辑重写代码,并且基本上都以相同或相似的情况结束。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! MyCollectionViewCell
if cellStateArray[indexPath.row] == 0 {
cell.pauseButton.isHidden = true
print("State: 0 -- Paused: Not Shown")
} else if cellStateArray[indexPath.row] == 1 && cell.timerPaused == false {
cell.pauseButton.isHidden = false
cell.playButton.isHidden = true
print("State: 1 -- Paused: False")
} else if cellStateArray[indexPath.row] == 1 && cell.timerPaused == true{
cell.pauseButton.isHidden = true
cell.playButton.isHidden = false
print("State: 1 -- Paused: True")
return cell
} else {
print("Did this and shouldn't have")
return cell
}
}
import UIKit
class MyCollectionViewCell: UICollectionViewCell {
var pauseTime = 0
var timerPaused = false
@IBOutlet weak var pauseButton: UIButton!
@IBOutlet weak var playButton: UIButton!
@IBOutlet weak var stopButton: UIButton!
@IBAction func pausePressed(_ sender: Any) {
timerPaused = true
}
@IBAction func playPressed(_ sender: Any) {
}
@IBAction func stopPressed(_ sender: Any) {
}
}
简而言之,我希望仅在状态1的单元格上隐藏pauseButton,并且不隐藏playButton。