2017-12-27 23 views
0

Ich habe ein Problem, bei dem ich hoffe, dass mir jeder helfen kann. Ich versuche, meine Tabellenansicht so zu erstellen, dass neue Daten oben in der Tabellenansicht statt unten hinzugefügt werden. Wenn du dir das Bild unten anschaust, tippte ich zuerst a und d zuletzt, aber ich würde es lieben, sie in der entgegengesetzten Richtung zu haben, so dass sie d, c, b, a erscheinen würden und wenn ich e addierte, würde es oben erscheinen .Wie kann ich meine Tabellenansicht auf den Kopf stellen, so dass neue Zellen oben erscheinen und nicht die Schaltfläche?

Ich habe bereits versucht, mit

tableViewOutlet.transform = CGAffineTransform(rotationAngle: -(CGFloat)(Double.pi)) 

and 

cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi)); 

Gerade Arbeits dem Kopf meine Tableview und Zellen zu verwandeln, und es funktionierte gut! Das einzige Problem ist, dass meine Tabellenansicht jetzt am unteren Rand des Bildschirms beginnt und wenn die Seite voll ist, müsste ich nach oben und nicht nach unten scrollen.

Screenshot of my situation (here)

Ich hoffe, dass jemand da draußen mir eine Hand geben kann, und helfen Sie mir!

Mit freundlichen Grüßen Kristofer

+0

Sie Ihr neues Objekt bei 0 Index jedes Mal hinzufügen. –

+0

Wenn es nur um die Reihenfolge Ihrer Zellen geht, ist es üblich, jedem Entity in Ihren Core-Daten (oder wie SH_Khan angibt, eine inkrementelle ID) einen 'NSDate'-Timestamp zuzuweisen und danach zu sortieren . Wenn es um UI geht, handelt es sich um ein breites Thema mit mehreren möglichen Lösungen. – n00bProgrammer

Antwort

0

Versuchen Sie, das Array zu sortieren absteigend Integer-Wert für Sie Modell Array hinzufügen und sortieren es

struct mainItem { 

    var id: Int 
    var userNumber: String 
    var address:String 


init(id: Int, userNumber: String, address: String) 
{ 


    self.id = id 
    self.userNumber = userNumber 
    self.address = address 


} 
} 


var arrRet = [mainItem]() 


    arrRet = arrRet.sorted(by: { 


     var m1 = Int($0.id) 

     var m2 = Int($1.id) 


     return m1! > m2! 


    }) 
+0

Hallo Khan meine app verwendet coreData so das sache ich sortiere ist eine berechtigung eines auto, wo ich die werte, datum, preis, liter und km.Aber ja, ich könnte versuchen, eine ID in Form von int hinzuzufügen und zu sehen, ob ich das sortieren kann. Ich werde es versuchen, danke! –

+0

Das setzt voraus, dass Sie möchten, dass die Daten in einer sortierten (entweder vorwärts oder rückwärts) Reihenfolge und nur nicht das Gegenteil von wie es eingegeben wurde. Wenn zum Beispiel A, G, E, D eingegeben wurden, was nicht bedeutet, dass etwas sortiert werden muss, sollte es in der Tabelle als D, E, G, A stehen. –

+0

das hinzugefügte Element wird eine höhere ID haben, so dass das Sortieren nach absteigend es an die Spitze der Zelle bringt –

0

So vorausgesetzt absteigend können Sie nicht ändern, wie die Daten zur Verfügung gestellt wird (dh Sortiere es), dann kannst du die Reihenfolge ändern, wie du darauf zugreifst.

So dies ändern:

let data = dataArray[indexPath.row] 

dazu:

let data = dataArray[dataArray.count - indexPath.row + 1] 

dies tun Sie nur das Datenfeld um den anderen Weg erreichbar.

So habe ich einen Test dataarray von [ "a", "b", "c", "d", "e"] und meine Methode verwendet es wie folgt berechnet:

indexPath.row = 0 --- (5 - 0 - 1) = 4 
indexPath.row = 1 --- (5 - 1 - 1) = 3 
indexPath.row = 2 --- (5 - 2 - 1) = 2 
indexPath.row = 3 --- (5 - 3 - 1) = 1 
indexPath.row = 4 --- (5 - 4 - 1) = 0 

Sie also haben die Reihenfolge umgekehrt, in der Sie auf das Array zugreifen.

(Verwirren Sie nicht etwa mit der, wie der Transformation wird nur eine Welt des Schmerzes sein)

+0

Nein, die Mathematik ist korrekt und ich habe ein Beispiel in Xcode ausgeführt. Brackets machen keinen Unterschied, da 'dataArray.count - indexPath.row - 1 'dasselbe ist wie' dataArray.count - (indexPath.row - 1)' das ist das gleiche wie '(dataArray.count - indexPath.row) - 1'. Ich werde die Frage mit den Beispieldaten aktualisieren, die ich verwende. (Es gab einen Kommentar über die Mathematik ist falsch, aber es ist jetzt weg) –

+0

indexPath.row ist kein Wert für mich, weil ich Kerndaten verwenden. wenn ich rufe indexPath.row i bekommen (Einheit: Bilen; id: 0xd000000000a40000 ; Daten: { Dato = c; id = 0; kilometer = 3; liter = 3; pris = 3; –

+0

Ich verstehe das nicht so gut .. Die Zeile, die ich geändert habe, die indexPath.row verwendet, kam direkt aus dem Bild, das Sie verknüpft haben zum Beispiel –

0

Sie können die Verwendung umgekehrt() Methode des Swift-Arrays.

Wenn der Benutzer die Zeichenfolge eingeben, werden Sie, dass an dataarray anhängen: -

var dataArray: [String] = ["a", "b", "c", "d"] 
dataArray.append("e") 

Und in cellForRowAtIndexPath: -

let data = dataArray.reversed()[indexPath.row] 
cell.textLabel!.text = data 
Verwandte Themen