Ich entwickle eine App, die zufällig zwei CollectionView Zellen gleichzeitig auswählt. Ich habe das in Android erreicht, indem ich Handler verschiedene Runnables hinzugefügt habe. In iOS eine Zelle der Auswahl arbeitet perfekt mit diesem Code in Ordnung:Zwei Timer gleichzeitig ausführen
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)
})
nun den Timer für zwei Threads und zeigen ihren Index am Ende der Frist laufe ich. Dafür habe ich nur noch diesen Code, die einen anderen Thread erstellt:
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)
})
Beim Betrachten des Protokolls kann ich für beide Thread bekommen einloggen. Aber UI Cell Selection scheint nicht zwei Zellen auszuwählen. Ich bin neu in iOS, also nicht viel von Multithreading/Mulitple Timer in iOS.