UITableView unter iOS8 in Editing Mode

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UITableView unter iOS8 in Editing Mode

    Hallo zusammen,

    ich bin neu hier im Board und auch noch relativ neu in der App-Entwicklung für iOS.
    Auf der Arbeit entwickle ich eine App, welche in TableView's Dateien von iPad anzeigt und diese nach Auswahl öffnet und dann über Bluetooth 4.0 ein externes Messgerät steuert.
    Die Kommunikation über Bluetooth funktioniert, mein Problem sind die TableViews. Allerdings auch erst, seit dem iOS8 veröffentlicht wurde.
    Das Problem ist, dass bis iOS7 durch ein Wischen nach links über eine Zelle den TableView in den Editier-Modus versetzt hat und den Löschen Button aktiviert hat. Da wurde dann der Inhalt der Zelle etwas nach links geschoben und der Button war auf der rechten Seite zu sehen. Alle anderen Zellen waren hiervon nicht betroffen, d.h. es wurde nur in der "gewischten" Zelle der Inhalt verschoben. Soweit alles Prima!
    Seit dem nun iOS8 erschienen ist, verhalten sich die TableView's anders. Ein Wischen nach links bewirkt nun, dass der Löschen Button sichtbar wird (allerdings rutscht dieser weiter nach links in die Zelle). Alle weiteren sichtbaren Zellen des TableView verlieren die Hintergrundfarbe (die Farbe verschwindet zum linken Rand der Zelle). Durch Betätigen des Löschen Button bekommt der View wieder sein "normales" Aussehen. Wenn ich allerdings die falsche Zelle "gewischt" habe, und auf einer anderen Zelle erneut "wische", dann passiert nichts. Ich muss erst durch Scrollen die Zellen neu laden.

    Hat jemand eine Idee, was da passiert ist?
    Die Elemente, die ich in die Zelle "eingebaut" habe, liegen alle im ContentView.
    Ich benutze XCode 6.0 und ein iPad mit iOS8.
    Getestet habe ich auch schon mit XCode 6.01 und einem iPad mit iOS8.0.2. Auch hier zeigt sich dieser Fehler.

    Wenn ich allerdings die App auf ein Gerät mit iOS7 spiele (über XCode) dann verhalten sich die TableView's ganz normal.

    Ich habe mal zwei Screenshots angehängt, die mein Problem verdeutlichen.


    Beste Grüße
    Benjamin
    Dateien
    • Screen_iOS7.PNG

      (114,9 kB, 263 mal heruntergeladen, zuletzt: )
    • Screen_iOS8.PNG

      (86,49 kB, 282 mal heruntergeladen, zuletzt: )
  • Es sieht so aus als würde der TableView nicht über die komplette Breite des Superviews gehen. Evtl. gibt es diesbezüglich ein Problem.

    Ziehe den TableView daher einfach mal auf die komplette Breite des Superviews. Ich kann mir vorstellen, dass Apple immer nur TableViews verwendet und testet, welche über die komplette Breite des Views gehen.
  • Hallo MCDan,

    danke für deine Antwort!

    Die TableViews haben die komplette Breite des SuperView.
    Aber durch deine Anmerkung habe ich den "Übeltäter" gefunden. Ich habe für die TableViewCell die setFrame Methode überschrieben und einen kleinen Rand links und rechts der Zelle erzeugt. Dies löste bei mir dieses merkwürdige Verhalten aus. Ohne die Methode läuft alles wie gewohnt. Nur das eben der Rand fehlt.

    Beste Grüße
    Benjamin
  • Benjamin schrieb:

    Ich habe für die TableViewCell die setFrame Methode überschrieben und einen kleinen Rand links und rechts der Zelle erzeugt.

    Das ist generell eine schlechte Idee: Der View berechnet seinen Frame aus den Werten anderer Propertys. Wenn Du einen Abstand zu Rand haben möchtest, solltest Du das über entsprechendes Autosizing bzw -layout machen. Bei Tableview-Zellen solltest Du das jeweils für die Views im Contentview der Zelle und nicht für die Zelle machen.
    „Meine Komplikation hatte eine Komplikation.“