Ho una sottoclasse personalizzata UITableViewCell
e il suo xib associato. Ho un UILabel
e un UIButton
in questa cella e ho collegato il ritocco all'interno dell'azione del pulsante alla sottoclasse.Ottieni IndexPath dall'interno di una sottoclasse UITableViewCell in Swift
Che cosa ho bisogno è quando quel pulsante nella cella è sfruttato, per ottenere l'indexpath della cellula che ha quel pulsante. E magari rimandalo al controller di visualizzazione tramite un delegato o qualcosa del genere.
Poiché sono all'interno di una sottoclasse UITableViewCell
, non riesco a utilizzare una soluzione come this perché non ho un riferimento a tableview dall'interno della sottoclasse della cella. Dopo ulteriori indagini ho trovato la soluzione another e l'ho implementata in Swift in questo modo.
import UIKit
class ContactCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
selectionStyle = .None
}
@IBAction func callButtonPressed(sender: UIButton) {
let indexPath = (self.superview as UITableView).indexPathForCell(self)
println("indexPath?.row")
}
}
Ma quando si tocca il tasto, si blocca con un messaggio di errore che dice Swift fusione dinamica fallito.
Qualche idea di cosa non funziona nel mio codice?
O io sono aperto a qualsiasi altri suggerimenti che mi permettesse di ottenere il risultato desiderato in qualsiasi altro modo.
Grazie.
Suona come avete bisogno di un delegato: http://stackoverflow.com/questions/24099230/delegates-in-swift – ullstrm
Qual è il motivo per cui è necessario conoscere il relativo indexPath? 'println (" indexPath? .row ")' non è ovviamente una vera ragione. Qual è il modello dietro tutto ciò? –
@POB Il motivo è che ho eliminato i metodi dell'origine dati di tableview e li ho inseriti in una classe riutilizzabile separata come descritto in [questo] (http://www.objc.io/issue-1/lighter-view-controllers. html) articolo. La mia cella personalizzata ha un pulsante e ora ho bisogno di ottenere il percorso dell'indice della cella che viene toccato dal pulsante. – Isuru