質問: お力添え頂けますと幸いです... Table View内でセル(動画)を1度タップしたら動画が再生される機能を作りました。 (正確には、TableViewではなくCollection Viewで作っています) 動画再生中に、もう一度再生中のセルをタップしたら、動画を一時停止させ、3回目にタップしたら一時停止した箇所からもう一度再生されると言う処理を実現したいです。 通常のボタンであれば、以下のリンクにあるように書けばいいかと思いますが、 TableView内のセルであるため、2回目のタップを検知する方法が分からないです。 didSelectItemAtの中に追加で何かコードを書けば良いのか、それとも全く別のことをしないと いけないのかご教示頂けますと幸いです。 ``` func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { //この中で何か特別な処理をする? } ``` ちなみに以下のリンクで同じ内容の質問がありましたが、回答の意味がよくわかりませんでした。 https://stackoverflow.com/questions/12952826/ios-how-to-know-if-a-row-is-tapped-second-time-in-uitableview/12953306 ◆リンク先の回答: Maintain a mutable array and store row index whenever a row is first time selected in array and call first action. When row is selected second time or another row is get selected check if index of that row is present in array, if it is than call second action else add index of row to array and call first action. 以上お読みいただきありがとうございます。 お手数ですが、アドバイスもらえますと幸いです。
回答: 変数を用いて、押されたのを判別すればいいと思います。 わかりやすいのはBool型, isPayingとかですかね。 ``` var isPlaying: Bool = flase ``` とグローバル変数を宣言し、 cellがタップされたら、isPlaying = trueとし、 custom classで再生・停止の関数を用意すればいいのではないでしょうか? ``` func tableview( didselectetcell の関数) { if self.isPlaying == true { self.isPlaying = false } else { self.isPlaying = true } self.changePlayer(playing: self.isPlaying) } func changePlayer(playing: Bool) { if playing == true { // 再生する関数 } else { // 停止する関数 } } ``` どうでしょう?