2016-08-09 14 views
1

Ich verwende This Example für dynamisch expandierende Zellen. Dieses Beispiel zeigt, wie die Zelle mithilfe eines Datenmodells erweitert wird. aber was ich brauche ist, wenn eine Zelle klickt, holt es die Anzahl der Datensätze, die erweitert werden sollen. Ich habe versucht, wie folgt zu tun. aber ich kann nicht erreichen, was ich wollte. Bitte helfen Sie mir dabei.Erweiterbar UITableView Dynamisch

So füge ich dynamisch Beispieldaten zu meinem Datamodel hinzu.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    DataModel.sampleDetails = ["Sample 1","sample 2","sample 3"] 

    //historyTable.beginUpdates() 

    switch expandedIndex { 
    case .None: 
     expandedIndex = NSIndexPath(forRow: indexPath.row + 1, inSection: indexPath.section) 

    case .Some(let index) where index.row == indexPath.row: 
     tableView.deselectRowAtIndexPath(indexPath, animated: false) 

    case .Some(let index) where index.row == indexPath.row + 1: 
     expandedIndex = nil 
     tableView.deselectRowAtIndexPath(indexPath, animated: false) 

    case .Some(let index) where index.row < indexPath.row: 
     expandedIndex = nil 
     self.tableView(tableView, didSelectRowAtIndexPath: NSIndexPath(forRow: max(0,indexPath.row - 1), inSection: indexPath.section)) 
    default: 
     expandedIndex = nil 
     expandedIndex = NSIndexPath(forRow: indexPath.row + 1, inSection: indexPath.section) 
    } 

    //historyTable.endUpdates() 
} 

dies ist, wie ich die Anzahl der Datensätze für Tableview

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    let sample = !(DataModel.sampleDetails.isEmpty) ? DataModel.sampleDetails.count : 0 

    return expandedIndex != nil ? 
     viewModel.count() + sample : 
     viewModel.count() 
} 

dies wie nur bekommen, wenn ich den Code ändern, arbeitet unter

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    let sample = !(DataModel.sampleDetails.isEmpty) ? DataModel.sampleDetails.count : 0 

    return expandedIndex != nil ? 
     viewModel.count() + 1 : 
     viewModel.count() 
} 

ich weiß nicht, was das Problem ist.

Bitte helfen Sie mir

+0

Was ist der Fehler hast du bekommen? –

+0

@ChaturangaSilva Dies ist, was ich bekomme, wenn ich die Art des Erhaltens ändern NSInternalInconsistencyException ', Grund:' Ungültige Aktualisierung: ungültige Anzahl der Zeilen in Abschnitt 0. Die Anzahl der Zeilen in einem vorhandenen Abschnitt nach dem Update (5) muss gleich der Anzahl der Zeilen in diesem Abschnitt vor der Aktualisierung sein (3), plus oder minus der Anzahl der Zeilen, die aus diesem Abschnitt eingefügt oder gelöscht wurden (1 eingefügt, 0 gelöscht) und plus oder minus der Anzahl der in oder verschobenen Zeilen aus diesem Abschnitt (0 ist eingezogen, 0 ausgezogen). ' – Darshana

+0

@ Darshana hier ist die Antwort, http://Stackoverflow.com/a/31200769/2273094 hoffe, es wird Ihnen helfen ... –

Antwort

1

Sie dataModel.sampleDetails auf didSelectRow festgelegt haben.

DataModel.sampleDetails = ["Sample 1","sample 2","sample 3"] 

Aber

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { } 

aufgerufen wird, bevor Sie die DataModel.sampleDetails setzen. Sie sollten diese Zeile also auf viewDidLoad() setzen. Dies wird Ihr Problem beheben

+0

was ich erreichen will ist, erweitern Sie die Tabelle Nur anzeigen, wenn eine Zelle ausgewählt wurde. und die Tabelle sollte die Anzahl der Datensätze kennen, die nur bei Auswahl der Zelle erweitert werden sollen. weil ich die Daten mit Hilfe einer API bekomme .. das ist, wo ich stecken geblieben bin :( – Darshana

+0

hmmm, so dass die Anzahl der Zeilen durch API Aufruf erhalten? Dies wird für eine Animation Lag führen –

+0

Wie kann ich dies erreichen? Bitte helfen Sie mir – Darshana

Verwandte Themen