0
私はランダムに2つのCollectionViewセルをランダムに選択するアプリを開発しています。ハンドラに別のRunnablesを追加して、アンドロイドでこれを達成しました。一つのセルを選択するのiOSで は、このコードを完全に正常に動作している:同時に2つのタイマーを実行する
let randomNumber1 = Int(arc4random_uniform(UInt32(numberOfItems)))
print("random1",randomNumber1)
let indexPath1 = IndexPath.init(row: randomNumber1, section: 0)
self.previousIndexpath1 = indexPath1
self.collectionView(self.imageCollectionView, didSelectItemAt: indexPath1)
myTimer1 = Timer.scheduledTimer(timeInterval: TimeInterval(0.5), target: self, selector: #selector(AdvanceCollectionViewController.selectRow1), userInfo: nil, repeats: true)
let deadlineTime1 = DispatchTime.now() + .seconds(5)
DispatchQueue.main.asyncAfter(deadline: deadlineTime1, execute: {
self.myTimer1.invalidate()
// self.performSegue(withIdentifier: "collectionToDetail", sender: self)
})
今、私は2つのスレッドのためのタイマーを実行して、期限の終わりに彼らのインデックスを表示します。
let randomNumber2 = Int(arc4random_uniform(UInt32(numberOfItems)))
print("random2",randomNumber2)
let indexPath2 = IndexPath.init(row: randomNumber2, section: 0)
self.previousIndexpath2 = indexPath2
self.collectionView(self.imageCollectionView, didSelectItemAt: indexPath2)
myTimer2 = Timer.scheduledTimer(timeInterval: TimeInterval(0.5), target: self, selector: #selector(AdvanceCollectionViewController.selectRow2), userInfo: nil, repeats: true)
let deadlineTime2 = DispatchTime.now() + .seconds(5)
DispatchQueue.main.asyncAfter(deadline: deadlineTime2, execute: {
self.myTimer2.invalidate()
// self.performSegue(withIdentifier: "collectionToDetail", sender: self)
})
ログを表示しているとき、私は、スレッドの両方のためにログを取得することができます。そのために私は別のスレッドを作成し、このコードを追加しました。しかし、UIセル選択は2つのセルを選択するようには見えません。私はiOSの初心者ですので、iOSのマルチスレッド/マルチタイマをあまり気にしません。