Mám prispôsobené UITableViewCell
ktorá využíva a NSTimer
. Ako zastavím alebo zneplatním časovač, keď sa objaví obrazovka.
skúsil som
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
ale zdá sa, že to nefunguje.
Vopred ďakujem.
odpovede:
0 pre odpoveď č. 1Aby to fungovalo, musí byť zavedených niekoľko vecí:
1)
Nastavili ste vo svojom UITableView delegáta?
2)
Používate systém iOS 6 a novší?
Ak nastavíte bod prerušenia vdidEndDisplayingCell:
„, ubezpečte sa, že znehodnocujete správny časovač. A tiež si nastavte vlastnosť časovača alebo ivaru vlastnej bunky na nulu, aby ste si boli istí dvojnásobne.
0 pre odpoveď č. 2
Pravdepodobne by ste mohli ísť s viewWillDisappear aleboviewDidDisappear, podľa toho, kedy presne chcete, aby sa časovač zastavil. Prvá je pravdepodobne vaša najlepšia stávka. A nechajte ho zneplatniť časovač (y), buď priamo, alebo prostredníctvom oznámenia.
A ako povedal Michael vo svojej odpovedi, nezabudnite nastaviť časovače na nulu po tom, ako ich zneplatníte.
0 pre odpoveď č. 3
Časovač pre UITableviewCell môžete zastaviť pomocou NSNotificationCenter
Krok 1 v súbore UITableViewCell
override func awakeFromNib() {
super.awakeFromNib()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.stopTimer), name: "stopTimer", object: nil)
}
func stopTimer(){
if self.couponTimer != nil {
self.couponTimer?.invalidate()
self.couponTimer = nil
}
}
Krok 2 v súbore ViewController
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
NSNotificationCenter.defaultCenter().postNotificationName("stopTimer", object: nil)
}