Ich habe eine Komponente in XIB
Datei erstellt. Diese Datei enthält zwei KomponentenTableView Zelle wählen Ereignis nicht triggern
- Label-
- Tableview
ich dann verknüpft haben und setzen es File's Owner
Klasse SampleView
. Ich habe die XIB-Datei view
mit SampleView.swift Datei und diese Datei nur folgenden haben angebracht Code in seiner Klasse:
@IBOutlet var view: UIView!
Ich habe jetzt eine Controller Datei SampleController
mit Protokollen UIViewController
, UITableViewDelegate
und UITableViewDataSource
erstellt. Ich habe den folgenden Code platziert in seinem init()
func die benutzerdefinierte Komponente anzuzeigen:
init() {
super.init(nibName: nil, bundle: nil)
modalPresentationStyle = UIModalPresentationStyle.Custom
view.addSubview(SampleView())
}
ich diese SampleController
bin mit programmatisch als Modal
anzuzeigen.
Diese Codes werden als Modal mit Label und TableView angezeigt. Es füllt auch die Daten in TableView auf. Das Problem ist:
Wenn ich die Zelle in der Tabelle antippen, wird das Ereignis beim ersten Versuch nicht ausgelöst. Wenn ich auf eine andere Zelle tippe, wird das vorherige Zellevent ausgelöst.
Irgendeine Idee warum passiert das?
Hier gibt es 2 Funktionen zum Bestücken und Handhabungszelle Hahn:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("CELL")
if (cell == nil) {
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "CELL")
}
cell!.textLabel?.text = sampleData[indexPath.row]["title"]
return cell
}
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
print("tapped")
}
Souds wie eine Wiederverwendung von Zellen Problem. Haben Sie die erforderlichen 'UITableViewDataSource' Methoden implementiert? Und wenn ja, kannst du sie in deiner Frage veröffentlichen? – Koen
@Koen Ich habe erwähnt, dass ich UIViewController, UITableViewDataSource und UITableViewDelegate in 'SampleController' Datei verwendet habe. Die Daten füllen sich ebenfalls gut, aber das Abgriffsereignis wird ausgelöst, nachdem die zweite Zelle angetippt wurde. – codelearner
Ok, also was steckt in den Funktionen 'cellForRowAtIndexPath' und' didSelectRowAtIndexPath'? – Koen